一个关于列表的蹊跷问题,跪求解答
代码:list1 = [,,]
list2 = [[]]*3
list3 = [[],[],[]]
list1.append(9)
list2.append(9)
list3.append(9)
print(list1)
print(list2)
print(list3)
运行结果:
[, , ]
[, , ]
[, [], []]
为什么list2的添加元素操作会添加到所有的子列表里面啊?list2和list3的区别在哪里啊? 这样做出来list2 = [[]]*3,表面看也是 [[],[],[]],但内部每个[]的地址都是相同的,一个append,其他的也跟着变。
如果需要初始化多个空二维列表最好
list4 = [[] for i in range(n)] list2 = [[]]*3与list3 = [[],[],[]]显示结果虽然相同,但是要注意的是list2是通过重复操作符“ * ” 形成的,既然是重复表示 3个列表会保持相同,
所以在改变list2中的任意一个列表,则三个列表都会随之改变 冬雪雪冬 发表于 2020-2-22 22:05
这样做出来list2 = [[]]*3,表面看也是 [[],[],[]],但内部每个[]的地址都是相同的,一个append,其他的也跟 ...
非常感谢,这个坑隐藏得有点深,不踩不知道啊 dudaguo 发表于 2020-2-22 22:10
list2 = [[]]*3与list3 = [[],[],[]]显示结果虽然相同,但是要注意的是list2是通过重复操作符“ * ” 形 ...
谢谢了,因为在编函数,空的嵌套列表要用参数来设定,所以踩到这个坑了
页:
[1]