Python - 合并两个同时连接的列表

Posted

技术标签:

【中文标题】Python - 合并两个同时连接的列表【英文标题】:Python - Merge two lists with a simultaneous concatenation 【发布时间】:2014-01-04 04:14:39 【问题描述】:
ListA = [1,2,3]
ListB = [10,20,30]

我想将列表的内容添加在一起(1+10,2+20,3+30) 创建以下列表:

ListC = [11,22,33]

有没有专门用这种方式合并列表的函数?

【问题讨论】:

【参考方案1】:

这行得通:

>>> ListA = [1,2,3]
>>> ListB = [10,20,30]
>>> list(map(sum, zip(ListA, ListB)))
[11, 22, 33]
>>>

上面使用的所有内置函数都解释了here。


另一种解决方案是使用list comprehension。

根据您的口味,您可以这样做:

>>> [sum(x) for x in zip(ListA, ListB)]
[11, 22, 33]
>>>

或者这个:

>>> [x+y for x,y in zip(ListA, ListB)]
[11, 22, 33]
>>>

【讨论】:

我必须写[k for k in map (...)] 才能生成列表,否则我会得到<map object at 0x02380730>,这可能与Python 3 不同。 @LasseV.Karlsen - 是的。我很抱歉。我没有看到 Python 3.x 标签。我更新了我的帖子。 @LasseV.Karlsen 是的,在 Python 2 中 map 返回一个列表,而在 Python 3 中它返回一个生成器对象。 也许让 list-comp 与map 方法更加一致...[sum(items) for items in zip(listA, listB)] @JonClements - 已更新。【参考方案2】:

@iCodez 给出了很好的回应,但在适用于更复杂情况并且需要在列表之间进行大量操作(和连接)的情况下,numpy 是一个非常强大的学习工具!这就是您使用 numpy 解决问题的方法:

#import it
import numpy as np
#state your lists as numpy arrays
array1 = np.array(ListA)
array2 = np.array(ListB)

然后将您的两个列表设置为 numpy 数组。现在你要做的就是添加它们!

>>> concatenated = array1 + array2
>>> print concatenated
[11, 22, 33]

现在这会返回一个 numpy 数组的实例,所以如果你想要它作为一个列表,你可以直接使用 concatenated.tolist()。如您所见,当您跨列表映射数学运算时,这非常有用。你可以用 numpy 做很多事情,我建议你研究一下。

注意:我知道使用 numpy 来解决这样一个快速简单的问题比必要的更详尽,但以防万一这是一个快速的“我如何解决跨多个列表的操作”,numpy 会让你的生活变得更加轻松!

【讨论】:

以上是关于Python - 合并两个同时连接的列表的主要内容,如果未能解决你的问题,请参考以下文章

python如何合并两个列表?

如何在python中把两个列表的各项分别合并为列表

python两个列表进行合并

python语句中合并两个列表并且将列表中的数安大小排列

python语句中合并两个列表并且将列表中的数安大小排列

如何连接两个 ArrayList?