gpt4 book ai didi

python - 对来自生成器表达式的数字流求和并计数

转载 作者:行者123 更新时间:2023-12-05 08:46:23 28 4
gpt4 key购买 nike

我可以对来自生成器表达式的数字流求和

education = '0 1 0 0 0'.split()
salary = [int(s) for s in '50 120 0 40 60'.split()] # 0 for missing data
# compute the sum of known low education salaries, aka les
total_les = sum(s for e, s in zip(education, salary) if e=='0' and s>0)

现在我想计算已知薪水的平均值,在我的示例中是 150/3 ......

我可以获得一份低学历工资的 list

 list_of_les = [s for e, s in zip(education, salary) if e=='0' and s>0]
mean_les = sum(list_of_les)/len(list_of_les)

或者我可以再数一次我的流量

 count = sum(1 for e, s in zip(education, salary) if e=='0' and s>0)

但是,为了便于讨论,假设流的长度非常大,我不想要一个不需要的巨大列表,而且流是不可复制的(不是我的例子……)。

    是否可以同时求和和统计流?

最佳答案

你可以用一个生成器表达式来过滤它,而不是把它变成一个列表;您需要做的就是使用 () 而不是 [] - 这将以“流式”方式处理它,而不是在内存中创建整个内容:

low_edu = (s for e, s in zip(education, salary) if e=='0' and s>0)

然后把总数加起来一起数:

total, count = 0, 0
for salary in low_edu:
total += salary
count += 1

您可以使用 functools.reduce 将其混搭到另一个生成器表达式中,但在我看来,使用一个简单的循环它会读起来更清晰。

关于python - 对来自生成器表达式的数字流求和并计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69824516/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com