我试图将每个属于此1d数据范围内的i称为子集。我想知道我是否可以在一行中执行此操作 - 我得到一个生成器对象,当我运行以下内容时,我不确定如何访问它:
print(sum(i) for i in range(0,len(subset)) if -1.00< subset[i] < 1.00)
答案 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”