使用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
谢谢。
答案 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]