我可以使用lambda表达式来计算我感兴趣的元素吗? 例如,当我需要计算列表中超过两个的元素时,我尝试了这个返回0的代码。
x = [1,2,3]
x.count(lambda x: x > 2)
答案 0 :(得分:25)
注意:“超过”是>
... =>
不是有效的运算符。
尝试sum(y > 2 for y in x)
或者,正如@Jochen所建议的那样,要防范非传统的第n方课程,请使用:
sum(1 for y in x if y > 2)
答案 1 :(得分:12)
您可以尝试以下任何一种
len([y for y in x if y > 2])
或
len(filter(lambda y: y > 2, x))
或更好
sum( y > 2 for y in x )
答案 2 :(得分:0)
x = [1,2,3]
reduce(lambda a,i: a+1 if (i>2) else a, x, 0)
这不会创建新列表。 a
是累加器变量,i
是列表中的项,末尾的0
是累加器的初始值。