将项目从一个列表添加到另一个列表列表

问题描述 投票:0回答:3

假设我有以下列表:

list_1 = [[1,2],[3,4],[5,6],[7,8]]
list_2 = [11,12,13,14]

如何将第二个列表中的项目添加到第一个列表中的每个项目?

说清楚了,这就是我要找的结果:

desired_output = [[1, 2, 11], [3, 4, 12], [5, 6, 13], [7, 8, 14]]

我试过的

我试过使用

zip
函数,但我得到的结果是嵌套的:

list(zip(list_1,list_2))
# [((1, 2), 11), ((3, 4), 12), ((5, 6), 13), ((7, 8), 14)]

请注意,由于额外的嵌套程度,它如何不遵循实际所需的输出。

python list iterable unpack iterable-unpacking
3个回答
2
投票
zip(*zip(*list_1), list_2)

解释:有一种规范的方式来转置列表,

zip(*lst)
。我们在这里所做的只是移调、压缩和再次移调


1
投票

您可以结合使用列表理解和

zip

desired_output = [[*x, y] for x,y in zip(list_1,list_2)]

print(desired_output)
# [[1, 2, 11], [3, 4, 12], [5, 6, 13], [7, 8, 14]]

请注意,

*x
解压
list_1
的项目,
y
只是从
list_2
中取出每个单独的项目,然后
[*x, y]
将它们打包回一个列表中。最后,围绕所有这些的列表理解负责迭代所有内容并生成完整列表。

PS:我正在回答我自己的问题,因为我能够在编写原始问题时自行找出解决方案。我在 this other thread 中找到了解决方案的提示。但由于另一篇文章处理的问题略有不同,我认为在这里写一篇专门针对这个特定问题的文章会很有帮助。


0
投票

您需要为 zip 生成的每个配对添加一个列表和一个值。这需要将单个值转换为一个小列表(或其他创建合并列表的方法):

[s1+[i2] for s1,i2 in zip(list_1,list_2)]
© www.soinside.com 2019 - 2024. All rights reserved.