首页 > 解决方案 > 将列表元素整合到列表列表中

问题描述

我想整合我的清单中的项目numbers

['1', '2', '3', '4', '5']

进入我的列表letters

[['a', 'b', 'c', 'd', 'e'], ['f', 'g', 'h', 'i', 'j'], ['k', 'l', 'm', 'n', 'o'], ['p', 'q', 'r', 's', 't'], ['u', 'v', 'w', 'x', 'y']]

要生成两者的组合,其中的第一个元素numbers被添加到第一个列表的前面,letters如下所示:

[['1', 'a', 'b', 'c', 'd', 'e'], ['2', 'f', 'g', 'h', 'i', 'j'], ['3', 'k', 'l', 'm', 'n', 'o'], ['4', 'p', 'q', 'r', 's', 't'], ['5', 'u', 'v', 'w', 'x', 'y']]

我尝试使用

newlist = []
for i in range(len(numbers)):
    newlist.append ([numbers[i], letters[i]])

但是,这会产生如下结果:

[['1', ['a', 'b', 'c', 'd', 'e']], ['2', ['f', 'g', 'h', 'i', 'j']], ['3', ['k', 'l', 'm', 'n', 'o']], ['4', ['p', 'q', 'r', 's', 't']], ['5', ['u', 'v', 'w', 'x', 'y']]]

标签: pythonlist

解决方案


一个班轮使用operator.iconcat

map(iconcat, map(list, numbers), letters)

对某些人来说可能不漂亮,但肯定很整洁!


我发现使用itertools.starmapand 的其他功能解决方案operator.iadd

starmap(iadd, zip(map(list, numbers), letters))

您还可以使用itertools.chain.from_iterable

map(chain.from_iterable, zip(numbers, letters)))

推荐阅读