无限python生成器
我学习python和编程的时间不长。所以你可能会觉得我的问题很傻。 我正在复习生成器,并试图无限地生成“是”、“否”,只是为了理解这个概念 我尝试过这个代码,但每次都是“是”无限python生成器,python,generator,Python,Generator,我学习python和编程的时间不长。所以你可能会觉得我的问题很傻。 我正在复习生成器,并试图无限地生成“是”、“否”,只是为了理解这个概念 我尝试过这个代码,但每次都是“是” def yes_or_no(): answer = ["yes","no"] i=0 while True: if i >=2: i=0 yield answer[i] i+=1 c=next(yes_or_no())
def yes_or_no():
answer = ["yes","no"]
i=0
while True:
if i >=2:
i=0
yield answer[i]
i+=1
c=next(yes_or_no())
print(c)
print(c)
print(c)
print(c)
yes\u no()
生成生成器;您希望每次在同一个生成器上调用next
,而不是反复打印相同的第一个元素
c = yes_no()
print(next(c))
print(next(c))
# etc.
也就是说,不需要单独的柜台;只需给出yes
,然后给出no
,然后重复
def yes_or_no():
while True:
yield "yes"
yield "no"
您需要初始化生成器,然后对已初始化的生成器对象调用
next
:
c = yes_or_no()
现在您需要在c
上调用next
:
print(next(c))
print(next(c))
在当前代码中
c=next(是或否())
:
将初始化生成器,并在其上调用yes\u或\u no()
将获得第一个next
,您将该yes
保存为nameyes
c
- 在接下来的几行中,您只是在执行
print(c)
itertools
的强大库来完成这项工作;它叫。以下是复制功能所需的全部代码:
def yes_no():
return itertools.cycle(['yes', 'no'])
正如其他人所说,可以使用next
或循环对生成器进行迭代
>>> c = yes_no()
>>> next(c)
'yes'
>>> next(c)
'no'
...
该函数不是一个生成器;函数的返回值被编辑为