group元素由两个python列表组成

时间:2013-08-08 10:11:04

标签: python python-2.7 text-files list-comprehension

我想使用list comprehension将列表中的2个元素从列表写入txt文件。

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

使filename.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。

3 个答案:

答案 0 :(得分: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")

希望它有所帮助。您可以找到有关列表推导here

的更多信息

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

您可以使用ipartition库中的funcy功能:

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))