Написание элементов альтернативных списков - Python - PullRequest
0 голосов
/ 10 августа 2011

Я пытаюсь записать чередующиеся элементы нескольких списков в файл, используя 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

Может кто-нибудь помочь мне в этом?Спасибо!

Ответы [ 4 ]

5 голосов
/ 10 августа 2011
>>> 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
3 голосов
/ 10 августа 2011

Вы можете использовать следующий код:

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» и используйте «с открытым ...», чтобы быть уверенным, что файл будет автоматически закрыт

2 голосов
/ 10 августа 2011
for letter, number in zip(foo, bar):
    fileout.write('%s\t\%s' % (letter, number))
1 голос
/ 10 августа 2011

Вы можете использовать встроенную функцию 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]) )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...