附加空列表时应该为空的Python列表

时间:2018-02-16 05:14:49

标签: python list

我在下面写了一个小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)

2 个答案:

答案 0 :(得分:3)

您只需将空列表附加到xyz_all,但这些列表不会保持为空。当你这样做

xyz.append([float(j) for j in line[4:7]])

您要附加到可能已经是xyz_all的元素的列表。

答案 1 :(得分:-1)

从你的代码中, xyz将是一个长度为零的空列表,但是当你这样做时      xyz = []      xyz_all.append(XYZ) 你要将一个空列表(xyz)附加到列表(xyz_all),这意味着现在xyz_all中有一个元素,它是一个空列表,其长度不是零而是1。 xyz_all = [[]]是一个包含空列表的列表。