python - 对迭代器中的值求和
问题描述
下面的代码打印所需的输出 - 10
values = iter(range(1, 5))
sum(values)
而如果我在这些行之间再添加一行代码,输出将变为 0
values = iter(range(1, 5))
values_list = list(values)
sum(values)
解决方案
Pythoniterators
是用尽的对象,这意味着它们在你调用它们时会被用完。
第一个例子:
values = iter(range(1, 5)) # <- iterator is created sum(values) # <- all of it is used at once
第二个例子:
values = iter(range(1, 5)) # <- iterator is created values_list = list(values) # <- all of it is used at once sum(values) # <- nothing left to sum :(
如果您想一遍又一遍地使用某些东西,那么iterator
数据类型不适合您;改用 a list
。
推荐阅读
- json - 无法在Future Builder中显示解析的JSON
- php - Curl/php 请求在第二次请求后移动到 localhost
- reactjs - React extrareducers 在一个专用的错误片中监听所有 *.rejected 动作
- java - 绘图和音频在 Java Android App 中无法协同工作
- sql - 如何用presto中的json字符串中的列名替换参数值
- mongodb - Spring Data MongoDB 查询以匹配数字和数字字符串
- c# - 如何将 FirefoxDriver 附加到正在运行的 Firefox 实例?
- hyperledger-fabric - 带有 SoftHSM 的 Fabric-CA:无法初始化 BCCSP PKCS11:配置无效。它不能为零
- c# - 如何使用网络凭据连接网络中某处的共享文件夹?
- laravel - Vuejs3 + laravel 8 在本地工作,但在 prod vuejs 文件中抛出语法错误并查看未呈现 Uncaught SyntaxError:59