Python新手求教:如何筛选大于0的变量进行求和?
简洁实现大于0的变量求和
方案1:列表+生成器表达式一键求和
把所有变量存入列表,配合sum()函数和过滤条件,一行代码就能完成需求:
num1 = 5 num2 = 5 num3 = 0 num4 = -5 num5 = 5 total = sum(num for num in [num1, num2, num3, num4, num5] if num > 0) print(total) # 输出15
逻辑说明:
- 把分散的变量整合到列表里,避免逐个判断的冗余操作
- 生成器表达式
num for num in ... if num > 0自动筛选出所有大于0的数值 sum()函数直接对筛选后的数值求和
方案2:先筛选再求和(可读性更强)
如果觉得生成器表达式有点绕,可以拆分步骤,先筛选出正数列表再求和:
nums = [num1, num2, num3, num4, num5] positive_nums = [num for num in nums if num > 0] total = sum(positive_nums) print(total)
原代码的问题
你之前的写法需要逐个判断变量,变量越多代码越臃肿,还容易出现漏加、错加的情况。用列表整合变量的方式,不管后续新增多少变量,只需要把变量加入列表即可,扩展性和维护性都更好。
内容的提问来源于stack exchange,提问作者timppa_41
相关产品推荐
相关产品推荐

