【发布时间】:2021-01-27 18:39:56
【问题描述】:
我的代码如下:
def infinite_loop():
li = ['a', 'b', 'c']
x = 0
while True:
yield li[x]
if x > len(li):
x = 0
else:
x += 1
我得到一个列表索引超出范围错误。我的代码出了什么问题?
【问题讨论】:
-
您在检查
yield是否超出范围之前。在分配x值后尝试移动yield li[x]。或者您可以使用模运算符 yieldli[x % len(li)] -
您编写此代码而不是使用 itertools.cycle 的任何特殊原因,它正是这样做的?
-
你想得到什么? a、b 和 c 循环的无限流?
-
@HarunYilmaz 你能澄清一下移动yield li [x]是什么意思吗,我是python新手,无法理解这些概念
-
@SreeramTP 是的,我正在尝试实现流(无限列表)
标签: python loops generator index-error