2016-11-28 83 views
0

我写下面的代码来创建像[[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'解决这个问题?

感谢

+1

问题寻求帮助调试(“为什么不这个代码工作吗?“)必须包含所需的行为,特定的问题或错误以及在问题本身中重现问题所需的最短代码。没有明确问题陈述的问题对其他读者无益。请参阅:[如何创建最小,完整和可验证示例](http://stackoverflow.com/help/mcve)。 –

+0

发生了什么非常明显,解决方法是在f()中使用X的副本。 – polku

+1

顺便说一下,你也可以在[1,2,3]]'中为'L = [[x,2,3]]。 –

回答

0

如果你必须使用你的函数f,然后尝试如下:

l = [] 
x = [1, 2, 3] 

def f(x): 
    x[0] = x[0] + 1 
    return x 

for i in range(3): 
    l.append(x[:]) 
    x = f(x) 

输出:

>>> l 
[[1, 2, 3], [2, 2, 3], [3, 2, 3]]