1

我有 3 个大列表要输出为列,[0][0][0] 然后向下输出。我目前的书面代码(适用于较小的列表)是这样的:

f=open("Clustered_energies.txt", "w")
for i in range(0, len(frame_position)):
print >> f, frame_position[i],energy[i],cell_volume[i]
f.close()

这给了我一个列表索引超出范围错误。我猜我需要使用列表理解,我试过这个:

print [(i,e,c) for i in frame_position for e in energy for c in cell_volume]

但是它的输出一遍又一遍地重复每个列表中的一个值,列表理解是要走的路吗?或者我的原始代码可以修复吗?

4

2 回答 2

3

像这样的东西?

[[x,y,z] for x,y,z in zip(frame_position,energy,cell_volume)]
于 2013-04-12T12:29:29.587 回答
1

我的第一个想法是使用zip,但它停在最短的列表上,所以我会使用izip_longestzip_longest在 Python3 中调用它以供将来参考):

import itertools
for i, e, c in itertools.izip_longest(frame_position, energy, cell_volume, fillvalue=" "):
    print i, e, c
于 2013-04-12T12:31:49.737 回答