Предположим, у меня есть список двухэлементных кортежей и список (не кортежей) литералов, например. целое число:Как я могу добавить zip-список в уже заархивированный список?
a = [('x', 'a'), ('y', 'b'), ('z', 'c')]
b = [1, 2 ,3]
И я хочу, чтобы составить список из трех элементов кортежей, так что я закодирован, как показано ниже:
zipped = zip((t[0] for t in a), (t[1] for t in a), b)
assert zipped == [('x', 'a', 1), ('y', 'b', 2), ('z', 'c', 3)]
Мой текущий код работает довольно хорошо, но я хочу знать, что там больше эффективный и элегантный рецепт, однако мой код должен повторять и распаковывать каждый кортеж дважды. Может ли кто-нибудь посоветуете?
Нет необходимости вызывать 'tuple':' застежка-молния (* (застежка-молния (* a) + [b])) 'также работают. BTW, это не будет работать в Python 3.x becaue ['zip' в Python 3.x] (http://docs.python.org/3/library/functions.html#zip) возвращает итератор вместо списка. – falsetru
да, это правда. Ред. Благодарю. –
Не использовать 3.x, но я полагаю, вы можете преобразовать итератор в список, используя list(). Вероятно, zip (* (список (zip (* a)) + [b]) должен работать там. –