今天早上起来写代码,发现定义的函数行为与预期的不一致,经过定位发现并非我的函数实现由问题,而是Python语言本身有个Bug,再此提炼记录以便后来者!
产生两个数组:
list_1 = [[]] * 4
print(list_1): [[], [], [], []]
list_2 = [[],[],[],[]]
print(list_2):: [[], [], [], []]
print(list_1 == list_2): True
从此证明 两种产生list的方式效果相同
最重要的来了,But:
list_1[0].append(1)
print(list_1):[[1], [1], [1], [1]]
list_2[0].append(1)
print(list_2):[[1], [], [], []]
也就是说采用第一种方式产生的List,操作其中任何一个元素,都会把其他元素同步修改,而第二种方式则不会。
我瞬间凌乱了,此问题在python2,python3都存在,目前还没找出python的bug原因,计划后面看看python源码再续写
网友评论