1

我想使用列表理解将列表中的 2 组元素写入 txt 文件。

datacolumn =    ['A1', -86, 'A2', 1839, 'A3', 2035, 'A4', 1849, 'A5', 1714, ...]

所以文件名.txt =

A1 -86
A2 1839
A3 2035
A4 1849
A5 1714
...

我找到了将元素写为一列的解决方案:

with  open('filename.txt','w') as f:
     f.writelines( "%s\n" % item for item in datacolumn)      

但我不知道如何一次为两个元素执行此操作。我用循环做到了:

with  open('filename.txt','w') as f:
     for i in range(0,size(datacolumn),2):
            f.write(str(datacolumn[i])+"\t"+str(datacolumn[i+1])+"\n") 

但我更喜欢使用理解列表。我正在使用 Python 2.7。

4

3 回答 3

1
res = [ "{}\t{}\n".format(x,y) 
          for (x,y) in zip(datacolumn[0::2], datacolumn[1::2])]

...会给你一个行列表,按照你的需要格式化。

请注意,它假设有偶数对要格式化。

于 2013-08-08T10:24:10.253 回答
0

我正在使用临时列表 a 和 b 分别将元素存储在偶数和奇数索引中。

datacolumn =    ['A1', -86, 'A2', 1839, 'A3', 2035, 'A4', 1849, 'A5', 1714]  
a=[datacolumn[x] for x in range(10) if x%2==0]
b=[datacolumn[x] for x in range(10) if x%2==1]
size=10
f=open("test.txt","w")
for i in range(size/2):
   f.write( a[i]+"\t" + str(b[i])+"\n")

希望它有所帮助。您可以在此处找到有关列表推导的更多信息

于 2013-08-08T10:23:59.607 回答
0

您可以使用funcy库中的ipartition函数:

from funcy import ipartition

with open('filename.txt','w') as f:
    f.writelines('%s %d\n' % (label, num) 
                 for label, num in ipartition(2, datacolumn))
于 2014-06-04T19:17:36.287 回答