python循环到单个lin

2024-09-28 21:51:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码:

from django.db.models import Sum, F, FloatField
from data.models import Plant, Recording
for plant in Plant.objects.all():
    total_ecof=0
    total_ectr=0
    for recording in Recording.objects.filter(plant__id=plant.id):
        total_ecof = total_ecof + (recording.performance_loss*recording.multiplier*recording.occurrence*plant.no_modules)/(plant.nominal_power*recording.years_of_operation*plant.nominal_power)
        total_ectr = total_ectr + ((10 + 15 + 200 + 50)*recording.occurrence+240*50*recording.occurrence*plant.no_modules)/(plant.nominal_power*3)
    print(total_ecof)
    print(total_ectr)

结果是:

0.00018
10800.049500000001
0.0002666666666666667
16000.073333333334
6.666666666666667e-05
4000.0183333333334

问题是: 我很肯定,有一个单行代码做同样的,请让我知道。你知道吗


Tags: 代码fromimportformodelstotalpowerplant
1条回答
网友
1楼 · 发布于 2024-09-28 21:51:52

如果您定义了一个lambda来计算您的本地\u ecof(或local \u ectr),那么您可以使用map(lambda, list)函数将计算应用于列表的所有元素,然后使用reduce(lambda x, y : x + y)将它们相加。你知道吗

相关问题 更多 >