Несколько%s со списком / кортежем в Python

Я пытаюсь вывести одну и ту же строку из списка / кортежа в другой%s, я пытался использовать это:

A = ('A', 'B', 'C', 'D')
# A = list(('A', 'B', 'C', 'D')
print type(A)
output = open('output.txt', 'w')
output.writelines('Multiple outputs like %s and %s\n' % (f for f in A, f for f in A))
output.close()

Как это делается в Python?

Но это выдает синтаксическую ошибку. Мне нужен вывод в форме:

Multiple outputs like A and A
Multiple outputs like B and B
Multiple outputs like C and C
Multiple outputs like D and D

3 ответа

Решение

Это должно работать:

output.writelines(('Multiple outputs like %s and %s\n' % (f,f)) for f in A)

Самый Pythonic способ сделать это с помощью output.writelines() а также string.format() функция:

output.writelines(('Multiple outputs like {word} and {word}\n'.format(word=w) for w in A))

Я мог бы сделать что-то вроде:

output.writelines(('Multiple outputs like %s and %s\n' % t for t in zip(A, B))

Здесь я предположил, что вы на самом деле не хотите одно и то же значение дважды (в противном случае смотрите ответ @Petter), но имеете отдельную итерацию B что вы хотели бы видеть "в паре" с A на выходе.

Другие вопросы по тегам