我想使用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。
答案 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))