【Python】嵌套list,调用append方法出问题
1.前言
这个标题不太好起,所以可能出现歧义,我也废话不多说,直接把我的问题摆出来,不是同样问题的,可以关掉窗口走人啦。
list1的打印结果期望是[[3],[],[]]
,但实际上是[[3],[3],[3]]
。
2.原因
list1[0],list[1],list[2]指向的东西是同一个东西。本质来说,他们都是同一个东西的不同别称。
如果还不懂,那么我把例子再弄两个。
inner_list = []
outer_list = [inner_list] * 3
outer_list[0].append(3)
print(outer_list)
这个例子,和我上述前言的代码是同一个意思。效果图如下:
3.解决方案
# 保证 list[0],list[1],list[2]指向的不是同一个东西即可
outer_list = [[] for i in range(3)]
outer_list[0].append(3)
print(outer_list)
# 或者
outer_list = []
for i in range(3):
outer_list.append([])
outer_list[0].append(3)
print(outer_list)
效果图如下:
在树下80: 宝藏up,果断关注!
lllwhwhwhlll: 既然1不靠谱干嘛还写在第一个?这不是坑人吗
小钟、: 只能说 写的一塌糊涂
呜哩哇啦啦: 感谢你的头铁,和你一样
Reno.: 我这里install都报错咋办,Collecting package metadata (current_repodata.json): failed报的这个错但是我换了好几个源都没解决