将临时列表添加到另一个列表中,丢失列表数据

时间:2016-04-29 22:19:27

标签: python list python-2.7

使用Python的第一个程序...我正在尝试将{3}({x 1}}数据从3列(xyz)重新排列为.xyz,其list值为x }具有相同的list值。

z

coordinates = [] zListTemp = [] zSetTemp = [] zList = [] 文件中的数据导入.xyz

coordinates

xyz = open("C:\\Users\\xxx\\Desktop\\testXYZ01.xyz") for line in xyz: x,y,z = line.split() coordinates.append([float(x), float(y), float(z)]) xyz.close() 获取所有z并输入coordinates,因为我希望将所有唯一zSet放入基于不同{{1}的列表中}}第

x

我相信这是我的问题所在。 获取具有相同z的所有 for index0, item0 in enumerate(coordinates): for index1, item1 in enumerate(coordinates[index0]): if index1 == 2: zSetTemp.append(item1) zSet = list(set(zSetTemp)) zSet.sort() print "zSet:", zSet print "-----------------------------------------------------------------------------------------------------------" 并将其附加到x。将z添加到zListTemp,将zListTemp zList添加到下一个del。最后,zListTemp中的每个for都应该是之前list的临时数据。

zList

最后,我在zListTemp中找到了空列表。 for iRange in range(len(zSet)): for i in (coordinates): if i[2] == zSet[iRange]: zListTemp.append(i[0]) print zListTemp #zList.append(zListTemp) zList += [zListTemp] print zList del zListTemp[:] print "-----------------------------------------------------------------------------------------------------------" print "list 1", zList[0] print "list 2", zList[1] print "zlist len", len(zList) 丢失了zList数据,因为我删除了zList数据吗?我的输出:

zListTemp

谢谢。

1 个答案:

答案 0 :(得分:0)

您的问题是,您要将[zListTemp]添加到zList,然后修改zListTemp

您的zList包含对同一zListTemp对象的多个引用。一旦你修改它,zList似乎也会改变。您可以在向其添加值或使用del zListTemp[:]清除zListTemp时修改zListTemp。

您可以通过不更改临时列表来修复它,而是每次都使用新列表。您可以通过将del行替换为:

来实现
zListTemp = []   # zListTemp now references a new empty list

那就是说,你的代码相当长,而且不必要。例如,要从坐标列表中获取所有Z,您可以使用:

all_zs = [c[2] for c in coordinates]