簡體   English   中英

Python:用於匯總滿足條件的列表中的元素的一個班輪

[英]Python: One liner for summing up elements in a list meeting a condition

如何在一行中編寫此代碼python?

num_positive_weights = 0
for i in  weights['value']:
    if i >= 0:
        num_positive_weights+=1

好吧,那不是有效的Python代碼(不支持i++語法),但它如下:

num_positive_weights = sum(i>=0 for i in weights['value'])
num_positive_weights = len([i for i in weights['value'] if i >= 0])
num_positive_weights = sum(filter(lambda x: x >= 0, weights['value']))

如果我們忽略import語句,你可以把它寫成

import operator
num_positive_weights = reduce(operator.add, (1 for i in weights['value'] if i >= 0))

如果import語句計數,則可以執行

num_positive_weights = reduce(__import__("operator").add, (1 for i in weights['value'] if i >= 0))

要么

num_positive_weights = reduce(lambda a,b: a+b, (1 for i in weights['value'] if i >= 0))

或者,更深入:

num_positive_weights = reduce(lambda a,b: a+1, filter(lambda i: i >= 0, weights['value']), 0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM