首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从发电机中得到奇异值?

如何从发电机中得到奇异值?
EN

Stack Overflow用户
提问于 2018-04-28 17:54:42
回答 1查看 40关注 0票数 0

我正在编写一个应用程序,用于监测家禽养殖场中的鸡死亡情况,并有以下代码:

代码语言:javascript
复制
today = datetime.date.today()
deaths = (sum(cd.count) for cd in ChickenDeath.objects.filter(date__gte=datetime.date(today.year, today.month, 1)))
print(deaths)

我的问题是它只是打印出<generator object chickens_overview.<locals>.<genexpr> at 0x110010678>而不是实际的总和。我也尝试过next(deaths),但是我只得到了错误'int' object not iterable。还有别的方法可以从这个生成器中得到值吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-28 18:23:02

你不应该把发电机还给我的。生成器应该是和函数的输入。

目前,您正在有效地创建一个项目列表,每个项目都是单个值的“和”。这就是为什么您会得到不可迭代的错误;不能迭代的是cd.count,因为它是单个值,不能与之相加。

我怀疑你的意思是把所有的数字加在一起:

代码语言:javascript
复制
deaths = sum(cd.count for cd in ChickenDeath.objects.filter(...))

但这不是正确的做法。你应该让数据库帮你做这笔钱:

代码语言:javascript
复制
from django.db.models import Sum
deaths = ChickenDeath.objects.filter(...).aggregate(total=Sum('count'))
print(deaths['total'])
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50079502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档