列出具有多个变量的理解

Mar*_*ina 4 python

有没有办法让列表理解中的两个或多个项目出列.

即我想做这样的事情:

>>> q = [1, 2, 3, 4]
>>> r = [x+y for x, y in q]
** This does not work though :( **
Run Code Online (Sandbox Code Playgroud)

预期:

>>> r
[3, 7]
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 6

您可以使用itertools文档中的grouper 配方:

>>> from itertools import izip_longest
>>> [x + y for x, y in grouper(2,q)]
[3, 7]
Run Code Online (Sandbox Code Playgroud)

食谱的源代码是这样的:

def grouper(n, iterable, fillvalue=None):
    "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
    args = [iter(iterable)] * n
    return izip_longest(fillvalue=fillvalue, *args)
Run Code Online (Sandbox Code Playgroud)