【发布时间】:2016-11-28 15:04:23
【问题描述】:
我编写以下代码来创建一个类似[[1,2,3],[2,2,3],[3,2,3]] 的数组,
def f(X):
X[0]=X[0]+1
return X
L=[]
X=[1,2,3]
for i in range(0,3):
L=L+[X]
X=f(X)
print(L)
但它正在打印[[4, 2, 3], [4, 2, 3], [4, 2, 3]]。为什么会发生这种情况以及如何使用函数 'f' 解决这个问题?
谢谢
【问题讨论】:
-
寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example。
-
发生的事情很明显,只需在 f() 中使用 X 的副本即可解决。
-
顺便说一句,你也可以
L = [[x,2,3] for x in [1,2,3]]。 -
您将引用传递给同一个对象所有 3 次。因此,当您更改列表时,它会在您使用此参考的任何地方发生变化。
-
不能用'f'函数解决吗? @barak manos
标签: python arrays list function for-loop