列表列表奇怪的python问题

时间:2018-02-09 06:33:30

标签: python python-2.7 list

list= []

x = ['A', 'B', 'C', 'D', 'E', 'F', 'G']

for i in range(2):

          list.append(x)

list[0][0]="x"

print list

印刷后我得到了这个:

[['x', 'B', 'C', 'D', 'E', 'F', 'G'], ['x', 'B', 'C', 'D', 'E', 'F', 'G']]

每个列表中的第一项被'x'替换,而我只希望第一个列表中的第一项被'x'替换(因此行列表[0] [0] =“x”)< / p>

1 个答案:

答案 0 :(得分:1)

list.append(x)行将x的引用添加到list。两个子列表最终都指向同一个对象(与x一样)。事实上,执行x[0] = 'x'list[0][0] = 'x'具有完全相同的效果。要使子列表独立,请执行list.append(x.copy())list.append(x[:])

制作副本