Python中嵌套list使用append的问题?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中嵌套list使用append的问题?相关的知识,希望对你有一定的参考价值。

Data=[]
Data.append(0)
Data=Data*5
Data=[Data,Data,Data]
for j in range(len(Data)):
t=Data[j][4]+j+1
del Data[j][0] #删除第一个数据
Data[j].append(t) #增加最后个数据
print(Data)
'''
运行输出为什么不是以下结果?
[[0,0,0,0,1],[0,0,0,0,2],[0,0,0,0,3]]
'''

你这样写代码会把脑袋绕晕
请举一个有点实际意义的例子(用有意义的变量名)
参考技术A 首先我你每次迭代是这样的:
[[0, 0, 0, 0, 1], [0, 0, 0, 0, 1], [0, 0, 0, 0, 1]] when j= 0
[[0, 0, 0, 1, 3], [0, 0, 0, 1, 3], [0, 0, 0, 1, 3]] when j= 1
[[0, 0, 1, 3, 6], [0, 0, 1, 3, 6], [0, 0, 1, 3, 6]] when j= 2
从上面的输出可以看出,你的每一更改Data他当中的小的[0,0,0,0,0]都一起改了。造成这个原因是因为Data这个变量指向了同一个地址,当你更改一个所有都会跟着一起改变。如果你想要达到你的目的,最好这样写
Dataset=[]
for j in range(3):
data =[0]*5
data[-1] = j+1 #对最后一个值进行赋值(更改)
Dataset.append(data)
print(Dataset)本回答被提问者采纳

以上是关于Python中嵌套list使用append的问题?的主要内容,如果未能解决你的问题,请参考以下文章

p2·python中嵌套列表list元素输出·模块封装·发布上传(pigeon详细说)

Python基础

python嵌套循环使用循环和文件

Python递归提取嵌套列表的所有元素

关于Python中,循环后使用list.append(),数据被覆盖的问题

python学习list笔记