从List Comprehension中的函数解包返回值

时间:2015-02-09 13:07:58

标签: python list

此代码:

def f(v):
    return (v,v+1)

a = [f(i) for i in range(3)]

给出:

[(0, 1), (1, 2), (2, 3)]

我希望改变理解,以便:

[0, 1, 1, 2, 2, 3]

我该怎么做?

1 个答案:

答案 0 :(得分:2)

list comprehension中,您可以使用多个for ... in ...

>>> def f(v):
...     return (v,v+1)
...
>>> [x for i in range(3) for x in f(i)]
[0, 1, 1, 2, 2, 3]

或者,您可以使用itertools.chain.from_iterable

>>> import itertools
>>> list(itertools.chain.from_iterable(f(i) for i in range(3)))
[0, 1, 1, 2, 2, 3]