假设我们有一个迭代器(一个无限的)返回列表(或有限迭代器),例如返回的一个
infinite = itertools.cycle([[1,2,3]])
Run Code Online (Sandbox Code Playgroud)
什么是一个很好的Python习惯用来获得一个迭代器(显然是无限的),它将从第一个迭代器返回每个元素,然后从第二个迭代器返回每个元素,等等.在上面的例子中它将返回1,2,3,1,2,3,...
.迭代器是无限的,所以itertools.chain(*infinite)
不起作用.
Tor*_*rek 44
从Python 2.6开始,您可以使用itertools.chain.from_iterable
:
itertools.chain.from_iterable(iterables)
Run Code Online (Sandbox Code Playgroud)
您也可以使用嵌套的生成器理解来执行此操作:
def flatten(iterables):
return (elem for iterable in iterables for elem in iterable)
Run Code Online (Sandbox Code Playgroud)
Tho*_*ers 10
使用发电机:
(item for it in infinite for item in it)
Run Code Online (Sandbox Code Playgroud)
*构造解压缩到一个元组以传递参数,因此无法使用它.
归档时间: |
|
查看次数: |
19246 次 |
最近记录: |