簡體   English   中英

itertools.chain如何與生成器函數一起使用?

[英]How can itertools.chain be used with a generator function?

在下面的內容中,我正在嘗試但未獲得固定清單:

>>> from itertools import chain
>>> 
>>> def foo():
...     for i in range(3):
...         yield range(5)
... 
>>> 
>>> chain(foo)
<itertools.chain object at 0x7fce499934d0>
>>> 
>>> list(chain(foo()))
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
>>> 
>>> list(chain([foo()]))
[<generator object foo at 0x7fce49994aa0>]
>>> 
>>> list(chain(list(foo())))
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]

我究竟做錯了什么? 如何使用itertools.chain獲取平面列表[0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4]

您已經很接近了,可以從itertools使用chain.from_iterable

>>> list(itertools.chain.from_iterable(foo()))
[0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM