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 - 合并两个同时连接的列表的主要内容,如果未能解决你的问题,请参考以下文章