当前位置: 首页 > 知识库问答 >
问题:

为什么显示列表后调用下一个函数会出现StopIteretion错误?

贺聪
2023-03-14
def hundred_numbers():
  i=0
  while i<100:
    yield i
    i=i+1

print(hundred_numbers())
g=hundred_numbers()
print(next(g))
print(next(g))
print(next(g))
print(list(h))
print(next(g))

错误:
回溯(最近一次调用):文件“main.py”,第13行,在打印中(下一个(g))停止

共有1个答案

丌官哲彦
2023-03-14

因为您已经耗尽了生成器对象,并且没有什么可以让它屈服于您的程序。

def hundred_numbers():
    i=0
    while i<100:
        yield i
        i=i+1
g=hundred_numbers()
[next(g) for _ in range(10)] # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[next(g) for _ in range(10)] # [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

看到规律了吗?现在让我们抓住剩下的,即20-99

items = list(g)  # Could have done [next(g) for _ in range(20,100)]

项目现在将是20到99的剩余值。那么下次会发生什么?它无法进入while循环,因此没有什么可屈服的。如果您这样做,可以看到这一点:再次list(g)。这将导致一个空列表,因为没有什么可抓取的。

 类似资料:
  • 错误:第 1 行的解析错误:函数搜索(sour ^ 期望“字符串”、“数字”、“空”、“真”、“假”、“{”、“[”,得到“未定义” 代码:

  • 我实现了以下REST调用: 也是一个提供和使用application/x-protobuf的提供者类: 我的pom。xml看起来像: 我的小部件。原型: 选项java_package=“example”;选项java\u outer\u classname=“WidgetsProtoc”; 对于http://localhost:8080/RESTfulExample/widgets我得到以下错误消

  • 问题内容: 我已经阅读了 为什么在尝试在数据库中加载Blob时会出现java.lang.AbstractMethodError?,下载了我能找到的所有11g jdbc驱动程序,并将它们作为库和/或jar文件添加到了我的NetBeans应用程序中。我仍然不断收到相同的AbstractMethodError,这让我很生气!任何指导将不胜感激! 错误信息: 问题答案: 问题的原因是软件不兼容(jar文件

  • 为什么会引发主线程上的网络异常?its在异步任务上 } 编辑: 完整代码: logcat:

  • 调用以下命令时,GHCI返回一个错误:由于使用“print”而产生的不明确类型变量“f0”、“b0”会阻止约束(Show(f0 b0))得到解决。 据我所知,这是因为我的表达式的类型是(数字b,函数f)= 然而,List的Functor实例将fmap定义为map,并且map的定义忽略了函数参数,以防第二个参数是[],从而简单地返回[]。这应该意味着我的表达式应该简单地返回[],而不管我应用了多少f

  • 我正在努力在项目的下拉列表中显示所选选项的详细信息。 我有一个从MYSQLi查询填充的下拉列表。我希望用户选择一个选项以及从数据库中提取并显示给用户的相关值。 动态填充的下拉列表用于人员的“FirstName”(表名),当用户从下拉列表中选择名称时,我希望显示该人员的记录。 下面的代码用于动态填充下拉列表。用户单击按钮并进入下一页,该页将创建一个包含结果的表。没有错误,但也没有要求的结果。 下拉代