元素明智的连接与Python中的两个列表列表

Posted

技术标签:

【中文标题】元素明智的连接与Python中的两个列表列表【英文标题】:Element wise concat with two list of lists in Python 【发布时间】:2020-05-08 08:10:03 【问题描述】:

我有 2 个列表:

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

我怎样才能明智地连接为字符串元素并获得一个新的列表列表,如下所示:

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

最好的问候。

【问题讨论】:

【参考方案1】:

您可以使用 2 个for 循环:

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

new_list

输出:

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

或者你可以使用列表推导:

[[f'itemn' for n in numbers] for [item], numbers in zip(a, b)]

【讨论】:

【参考方案2】:

这对你有帮助吗?

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']]

【讨论】:

【参考方案3】:

一个没有itertools

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

输出:

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

【讨论】:

【参考方案4】:

使用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']]

【讨论】:

以上是关于元素明智的连接与Python中的两个列表列表的主要内容,如果未能解决你的问题,请参考以下文章

如何明智地连接多个列表元素

python 判断两个列表中相同和不同的元素

迭代Python列表中的每两个元素[重复]

Python 将列表中的头尾两个元素对调

python爬虫同时输出两个列表(zip函数)

Python3基础 调换列表中的两个元素