我正在尝试使用Python将多个列表的交替元素写入文件。我可以写一个列表的所有列表,然后是所有另一个列表,但是我很难以其他顺序执行此操作。我的代码如下所示:
foo = ['a', 'b', 'c']
bar = ['1', '2', '3']
fileout = open('zut.txt', 'w')
for i, el in foo, bar:
fileout.write('%s\t%s' % (i, el))
然而,当我尝试运行它时会产生ValueError。为了澄清,我正在尝试生成这样的文件:
a 1
b 2
c 3
任何人都可以帮助我实现这一目标吗?谢谢!
答案 0 :(得分:5)
>>> zip(foo,bar)
[('a', '1'), ('b', '2'), ('c', '3')]
然后,您可以遍历列表并访问元组的元素。
>>> for tpl in zip(foo, bar):
... print '%s\t%s' % tpl
...
a 1
b 2
c 3
答案 1 :(得分:3)
您可以使用以下代码:
foo = ['a', 'b', 'c']
bar = ['1', '2', '3']
with open('zut.txt', 'w') as fileout:
for x,y in zip(foo, bar):
fileout.write('%s\t%s\n' % (x,y)) # you missed here '\n'
详细了解'zip'并使用'with open ...'以确保该文件将自动关闭
答案 2 :(得分:2)
for letter, number in zip(foo, bar):
fileout.write('%s\t\%s' % (letter, number))
答案 3 :(得分:1)
您可以使用内置的zip
函数创建那种“对应”列表,然后将其写入文件:
foo = ['a', 'b', 'c']
bar = ['1', '2', '3']
lst = zip(foo, bar)
with open('zut.txt', 'w') as f:
for pair in lst:
f.write( '{0}\t{1}'.format(pair[0], pair[1]) )