我试图理解生成器的工作原理。
Python 3.8.1 (default, Dec 31 2019, 18:44:59)
[GCC 5.4.0 20160609] on linux
>>> def gen():
... yield '123'
...
>>> list(gen())
['123']
>>> list(next(gen()))
['1', '2', '3']
请解释为什么在使用next()时,Python会迭代一个项目。
我试图理解生成器的工作原理。
Python 3.8.1 (default, Dec 31 2019, 18:44:59)
[GCC 5.4.0 20160609] on linux
>>> def gen():
... yield '123'
...
>>> list(gen())
['123']
>>> list(next(gen()))
['1', '2', '3']
这是因为你的生成器使用 '123'
作为 yield 值,其数据类型是 str
。因此 next(gen())
返回的数值也是相同的。这就是 list(str)
的工作方式。
你可以尝试以下代码:
test = '123' # str
print(list(test)) # will also print ['1', '2', '3']
gen()
是生成器没有任何关系。这只是list(str)
的工作原理。 - DeepSpacelist(['123'])
,即 ['123']
。 - DeepSpace