作者daumda (行不行)
看板Python
标题[问题] 新手回圈给值
时间Sat Jan 29 09:31:31 2022
大家好
敝人只有用过fortran和matlab
最近要学python遇到一个问题
以往我写
do i=1,n
x(i)=a+b
end do
现在改写
for i in range(...):
x[i]=a+b
他显示错误x须先定义
请问我要怎麽改回圈内的那一行呢?
谢谢指教
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 172.58.155.165 (美国)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1643419893.A.5E9.html
1F:推 robert09080: 举例来说x是个list,定义x是空串列在回圈前面,再x01/29 09:47
2F:→ robert09080: .append(a+b),看看是不是你要的01/29 09:47
确实这是我目前的做法
但是如果我想要x[任意i]=a+b呢?
谢谢您的回答
※ 编辑: daumda (172.58.155.165 美国), 01/29/2022 09:58:13
3F:推 lycantrope: x任意不叫做array,在其他语言叫map在python是dict01/29 10:36
4F:→ OrzOGC: 你要的是itertools吧?01/29 10:44
5F:→ OrzOGC: x=list(range(n)),for i,j in enumerte(x): x[i]=a+b01/29 10:45
6F:推 robert09080: 为什麽要任意的i ? 如果是要建立一个相同初始值的01/29 16:30
7F:→ robert09080: array ,我自己会建议就list comprehension,[a+b01/29 16:30
8F:→ robert09080: for i in range(n)],如此会产生一个长度是n,值为01/29 16:30
9F:→ robert09080: a+b的一维array01/29 16:30
10F:推 robert09080: a, b 的值都一样?01/29 16:32
11F:推 lycantrope: numpy 则是 numpy.full(n, fill_value = a+b)01/29 17:07
抱歉误会
我的意思是说如果我回圈里要给
x[2i+1]=a+b
那我就不能用append了吧
这样要如何改写呢?
※ 编辑: daumda (167.96.136.80 美国), 01/29/2022 22:17:35
12F:→ papple23g: 回圈外可以先写 x={} 或 x=dict()01/29 22:41
13F:推 lycantrope: 你就算x[2i+1] 你也是要先建立够长的list啊 01/29 23:15
14F:→ lycantrope: 你写fortran都不用先宣告size吗? 01/29 23:15
15F:→ robert09080: dict 或是pandas01/30 01:20
回圈前先加x={}可行 感谢
※ 编辑: daumda (167.96.143.49 美国), 01/30/2022 23:27:09