修改一个元素会修改python中的整个列

时间:2014-05-16 06:24:52

标签: python list python-2.7

x = raw_input("")
y = raw_input("")
a = []  
b = []
count = 1

for i in range(0, int(y)):
    b.append(count)
    count+=1

for i in range(0, int(x)):
    a.append(b)

for i in a:
    print ""
    for j in i:
        print j, 

a[1][1] = 0



for i in a:
    print ""
    for j in i:
        print j, 

a已通过附加列表“b”n来创建 现在,当我修改[1] [1]时,整个列为[0] [1] - a [n] [1]被修改为该值

任何人都可以解释为什么会发生这种情况

2 个答案:

答案 0 :(得分:1)

这是因为通过附加b,您将创建指向相同对象的指针。而是按如下方式制作副本:

for i in range(0, int(x)):
    a.append(b[:])

您可以看到它按预期工作,here

答案 1 :(得分:1)

每次附加b时,都会附加相同的列表 - 不是列表的副本,而是对同一对象的多个引用。如果您希望每一行都是不同的列表,则每次都需要附加一个 new 列表,方法是执行a.append(b[:])

相关问题