Python:列表元素是连接的,如何分开

时间:2015-10-11 19:42:28

标签: python python-3.x

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]]

我该如何解决这个问题?

2 个答案:

答案 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>