Pyd*_*man 2 python yield generator
在David Beazley关于发电机的讨论中,他指出,作为一个警告:
消耗整个可迭代的函数不会终止(min,max,sum,set等)
这是什么意思?
gen = (x*2 for x in [1,2,3,4,5])
Run Code Online (Sandbox Code Playgroud)
sum(gen) 终止就好了.
他在无限序列的概念中提到了这一点,如果你为其他max人提供无限序列,他们根本就无法返回一个值.
想复制?除了建立一个自定义无限序列,Python有一个内置的一套这些在itertools(即repeat,count,cycle).尝试并做:
from itertools import repeat
max(repeat(20))
Run Code Online (Sandbox Code Playgroud)
看看会发生什么.实际上,不要这样做,max将继续咀嚼,因为repeat继续给予数字1.这是一个充满时间挑战并永不终止的爱情:-)
1 - 想象吃豆人在一条永无止境的直线上; 不断吃那些小黄色的东西.吃豆人= max,产生黄色的东西repeat.