![](/img/trans.png)
[英]python - Why does emptying a list and appending to it in a function gives empty lists?
[英]Python list that should be empty when appending empty lists
我在下面编写了一个小的Python脚本,该脚本的运行方式出乎意料,但是我无法查明错误。 具体来说,我有一个变量xyz_all
,我希望它是空的,因为我只是向其追加一个空列表,但实际上它包含xyz
的元素。 这怎么可能?
with open(filename,'r') as rf:
xyz = []
xyz_all = []
for line in rf:
if 'A' in line:
line = line.split()
xyz.append([float(j) for j in line[4:7]])
elif 'B' in line:
xyz = []
xyz_all.append(xyz)
print(xyz_all)
您只能将空列表附加到xyz_all
,但这些列表不会保持空。 当你做
xyz.append([float(j) for j in line[4:7]])
您将添加到可能已经是xyz_all
元素的xyz_all
。
从您的代码中,xyz将是一个长度为零的空列表,但是当您执行xyz = [] xyz_all.append(xyz)时,您会将一个空列表(xyz)追加到列表(xyz_all)上,这意味着xyz_all中现在有一个元素它是一个空列表,长度不为零,而是1。xyz_all = [[]]是其中包含空列表的列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.