简单的问题,但这给我带来了麻烦。你知道吗
我有一个列表,里面有列表,可以是一个有两个变量的函数,比如x,y和结果z,所以这个列表是这样构建的
a = [ [[x1,y1,z11], [x1,y2,z12], ...],
[[x2,y1,z21], [x2,y2,z22], ...],
... ]
现在,我想用一个不同的函数来构建另一个对象,比如w:
b = [ [[x1,y1,w11], [x1,y2,w12], ...],
[[x2,y1,w21], [x2,y2,w22], ...],
... ]
然后,我要这样做:
b = [[0.0]*len(a[0])]*len(a)
for i in range(len(a)):
for j in range(len(a[0])):
c = a[i][j][:2]
c.append(w(i,j))
b[i][j] = c
好的。现在,当我要求a[i][j]
时,我得到了b[i][j]
。这让我很困惑,因为当我在终端中尝试时,我得到了正确的a[i][j]
。有什么帮助吗?你知道吗
问题在于:
你需要做的是新的列表:
问题是
c = a[i][j][:2]
提供了对a
中实际列表的引用。当您向它附加某些内容时,您正在修改a
。相反,只要写下来现在
c
是一个不同的列表,您可以安全地将其保存在b
相关问题 更多 >
编程相关推荐