Объедините несколько списков из элемента списка для элемента для подсписка - PullRequest
1 голос
/ 28 мая 2020

Дано:

[['A', 'B', 'C'], ['1', '2', '3'], ['Z', 'X']]

Есть ли способ объединить каждый элемент из списков в списке для каждого индекса от 1 до 1, а не от 1 до многих без использования большого количества операторов for? И вывод должен быть списком с каждой конкатенацией в качестве элементов?

Ожидаемый результат:

['A1Z','B2X', 'C3']

Ответы [ 2 ]

3 голосов
/ 28 мая 2020

Мы хотим zip объединить списки. Но если списки не одинаковой длины, нам нужно заполнить их. itertools.zip_longest помогает нам в этом:

from itertools import zip_longest

xss = [['A', 'B', 'C'], ['1', '2', '3'], ['Z', 'X']]
result = ["".join(xs) for xs in zip_longest(*xss, fillvalue="")]

Что дает:

>>> result
['A1Z', 'B2X', 'C3']
0 голосов
/ 28 мая 2020

Решение для новичков

s = [['A', 'B', 'C'], ['1', '2', '3'],['Z', 'X']]
f = []

n = 0
while n != len(s):
    t = ''
    for i in s:
        try: t = t + i[n]
        except IndexError: pass
    f.append(t)

    n = n + 1
print(f)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...