此代码:
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]
我该怎么做?
答案 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]