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

修改一个元素会修改python中的整个列,python,list,python-2.7,Python,List,Python 2.7,已通过在列表“b”后面添加时间来创建a 现在,当我修改[1][1]时,整个列即[0][1]-a[n][1]将被修改为该值 有人能解释为什么会发生这种情况吗?这是因为通过附加b,您正在创建指向相同对象的指针。相反,请按如下方式制作副本: 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

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


有人能解释为什么会发生这种情况吗?这是因为通过附加
b
,您正在创建指向相同对象的指针。相反,请按如下方式制作副本:

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, 

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

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

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