首页 > 解决方案 > 对于列表列表中的每个元素,与单独的平面列表中的相应值合并

问题描述

假设我有两个列表:

lst1 = [['a', 'b', 'c'], ['a', 'b', 'c'], ['a', 'b', 'c']]
lst2 = ['x', 'y', 'z']

我想将两者结合起来,使输出看起来像:

output = [['ax', 'bx', 'cx'], ['ay', 'by', 'cy'], ['az', 'bz', 'cz']]

我可以只用列表理解来做到这一点吗?使用zip()我尝试了以下代码行

output = [[x + y for x,y in zip(sublist, lst2)] for sublist in lst1]

但正如预期的那样,它产生了[['ax', 'by', 'cz'], ['ax', 'by', 'cz'], ['ax', 'by', 'cz']]。我正在尝试在这行代码上构建以获得我想要的输出。但不知道从这里去哪里。

我在想我可能需要访问 lst2 中的索引,enumerate()以便我只能将字符串应用lst2[0]到第一个子列表,然后应用lst2[1]到第二个子列表等。这可以通过列表理解来完成吗?

标签: pythonlist

解决方案


这是一个解决方案,您可以尝试一下,

lst1 = [['a', 'b', 'c'], ['a', 'b', 'c'], ['a', 'b', 'c']]
lst2 = ['x', 'y', 'z']

print(
    [[ii + j for ii in i] for i, j in zip(lst1, lst2)]
)

[['ax', 'bx', 'cx'], ['ay', 'by', 'cy'], ['az', 'bz', 'cz']]

推荐阅读