在单个语句中应用函数for循环

时间:2017-06-28 20:12:59

标签: python

我试图将每个属于此1d数据范围内的i称为子集。我想知道我是否可以在一行中执行此操作 - 我得到一个生成器对象,当我运行以下内容时,我不确定如何访问它:

print(sum(i) for i in range(0,len(subset)) if -1.00< subset[i] < 1.00)

2 个答案:

答案 0 :(得分:3)

您需要对生成器执行sum

print(sum(i for i in range(0,len(subset)) if -1.00 < subset[i] < 1.00))

您的括号只是围绕错误的项目设置......

更明确一点:你想要的是:

gen = (i for i in range(0,len(subset)) if -1.00 < subset[i] < 1.00)
print(sum(gen))

括号的设置方式,结果如下:

gen = (i for i in range(0,len(subset)) if -1.00 < subset[i] < 1.00)
print(sum(i) for i in gen)

...而print语句中的表达式只是另一个生成器。

答案 1 :(得分:0)

sum使用iterable作为参数,但是您将一个整数传递给它。例如,Python 3.X中的生成器range是可迭代的。见以下链接:

https://docs.python.org/3/library/functions.html#sum

https://docs.python.org/3/glossary.html - &gt;搜索“iterable”