a= [0]*2
a
Out[34]: [0, 0]
a[0] =1
a
Out[36]: [1, 0]
a= [0]*2
a[0] = datetime(2019, 3, 1)
a
Out[39]: [datetime.datetime(2019, 3, 1, 0, 0), 0]
a= [[0]*2]*3
a
Out[41]: [[0, 0], [0, 0], [0, 0]]
a[0][0] = datetime(2019, 3, 1)
a
Out[43]:
[[datetime.datetime(2019, 3, 1, 0, 0), 0],
[datetime.datetime(2019, 3, 1, 0, 0), 0],
[datetime.datetime(2019, 3, 1, 0, 0), 0]]
有兴趣的朋友研究下。
可能因为[0] * 2是一个数组的对象,再* 3的话只是把对象的引用复制了3次
正确的做法:
way1:
a= [[0 for i in range(2)] for j in range(3)]
way2:
a= [[0] * 2 for j in range(3)]
网友评论