如何并行遍历两个SUBlists?

时间:2017-11-28 15:52:21

标签: python python-2.7

如果有重复,我道歉,但我搜索过,找不到任何可以解决我当前问题的主题。

我想知道是否有一些pythonic方法可以并行迭代两个(或更多)子列表。我已经很清楚zip函数,所以我将在一个简短的例子中使用它来解释我想要做什么。假设我有以下两个列表:

list1 = [1,2,3]
list2 = [4,5,6]

我知道我可以像这样同时迭代它们:

>>> newlist = [i+j for i,j in zip(list1, list2)]
>>> newlist
[5,7,9]

然而,就我的数据处理方式而言,我想做一些稍微不同的事情。而不是两个独立的列表,我的数据存储看起来更像是这样:

biglist = [[1,2,3], [4,5,6]]

我知道我可以提取每个子列表作为它自己的变量,但我更希望我能做更多这样的事情:

newbiglist = [i+j for i,j in zip(biglist)]

python能够识别biglist中有两个子列表。有没有人知道可以做这样的事情的任何功能?

2 个答案:

答案 0 :(得分:1)

你试过吗

newbiglist = [i+j for i,j in zip(*biglist)]

"明星"或" splat" operator *将变量拆分为其组件以用作参数。

的结果
print(newbiglist)

是你想要的:

[5, 7, 9]

请注意,如果biglist包含两个列表以外的内容,则会出错。有几种方法可以处理不同数量的列表:@crook的答案处理得很好,还有其他方法。

答案 1 :(得分:1)

两个或两个以上你可以尝试这个

[sum(i) for i in  zip(*biglist)]

此处i将是可迭代的,因此您可以使用任何接受iterable的函数,或者您可以编写自己的函数。