如果有重复,我道歉,但我搜索过,找不到任何可以解决我当前问题的主题。
我想知道是否有一些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
中有两个子列表。有没有人知道可以做这样的事情的任何功能?
答案 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的函数,或者您可以编写自己的函数。