Элемент мудрый конкат с двумя списками списков в Python - PullRequest
3 голосов
/ 22 января 2020

У меня есть 2 списка списков:

a = [['Apple'], ['Banana']]
b = [[1,2,3,4], [4,5,6]]

Как объединить элементы в виде строк и получить новый список списков, как показано ниже:

new_list = [['Apple1', 'Apple2', 'Apple3', 'Apple4'], ['Banana4', 'Banana5', 'Banana6']]

С наилучшими пожеланиями.

Ответы [ 4 ]

4 голосов
/ 22 января 2020

Использование itertools.cycle

Пример:

from itertools import cycle

a = [['Apple'], ['Banana']] 
b = [[1,2,3,4], [4,5,6]]

result = [[m+str(n) for m, n in zip(cycle(i), j) ] for i,j in zip(a, b)]
print(result)

Выход:

[['Apple1', 'Apple2', 'Apple3', 'Apple4'], ['Banana4', 'Banana5', 'Banana6']]
2 голосов
/ 22 января 2020

Один без itertools:

[["%s%s" % (i[0], n) for n in j] for i,j in zip(a,b)]

Выход:

[['Apple1', 'Apple2', 'Apple3', 'Apple4'], ['Banana4', 'Banana5', 'Banana6']]
1 голос
/ 22 января 2020

вы можете использовать 2 for петли:

new_list = []
for [item], numbers in zip(a, b):
    item_list = []
    for n in numbers:
        item_list.append(f'{item}{n}')
    new_list.append(item_list)

new_list

вывод:

[['Apple1', 'Apple2', 'Apple3', 'Apple4'], ['Banana4', 'Banana5', 'Banana6']]

или вы можете использовать понимание списка:

[[f'{item}{n}' for n in numbers] for [item], numbers in zip(a, b)]
1 голос
/ 22 января 2020

это может вам помочь?

a = [['Apple'], ['Banana']]
b = [[1,2,3,4], [4,5,6]]
print([
    [c + str(d) for d in j for c in i] for i, j in zip(a, b)
])

Вывод:

[['Apple1', 'Apple2', 'Apple3', 'Apple4'], ['Banana4', 'Banana5', 'Banana6']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...