首页 > 解决方案 > 对迭代器中的值求和

问题描述

下面的代码打印所需的输出 - 10

values = iter(range(1, 5))
sum(values)

而如果我在这些行之间再添加一行代码,输出将变为 0

values = iter(range(1, 5))
values_list = list(values)
sum(values)

标签: python

解决方案


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


推荐阅读