修改一个元素会修改python中的整个列
已通过在列表“b”后面添加时间来创建a 现在,当我修改[1][1]时,整个列即[0][1]-a[n][1]将被修改为该值修改一个元素会修改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
,您正在创建指向相同对象的指针。相反,请按如下方式制作副本:
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[:])