def list():
mylist = [[0,0,0,0]]*3
mylist[1][2] = 8013
print(mylist)
输出:
[[0,0,8013,0],[0,0,8013,0],[0,0,8013,0]]
通缉输出:
[[0,0,0,0],[0,0,8013,0],[0,0,0,0]]
我该如何解决这个问题?
答案 0 :(得分:2)
在eval
上使用repr
。
mylist = eval(repr([[0,0,0,0]]*3))
或使用list comp生成列表
mylist = [[0,0,0,0] for _ in range(3)]
答案 1 :(得分:1)
使用mylist = [[0 for _ in xrange(4)] for _ in xrange(3)]
使用*
将导致Python对整个列表使用相同的对象,这就是为什么当您更改列表中的任何一个元素时,您正在更改其余元素。< / p>