使用 Lambda 表达式在 Python 中计数感兴趣的元素
我可以用lambda表达式来计算我感兴趣的元素吗?比如说,当我想要计算一个列表中大于两个的元素时,我试了这个代码,但它返回的是0。
x = [1,2,3]
x.count(lambda x: x > 2)
3 个回答
4
from functools import reduce
x = [1,2,3]
reduce(lambda a,i: a+1 if (i>2) else a, x, 0)
这段话的意思是,这样做不会生成一个新的列表。a
是一个用来累加的变量,i
是列表中的每一个项目,而最后的 0
是累加器的初始值。
21
你可以试试下面的任意一种方法:
len([y for y in x if y > 2])
或者
len(filter(lambda y: y > 2, x))
或者更好看的这个
sum( y > 2 for y in x )
47
注意:“大于”用 >
表示,而 =>
不是一个有效的操作符。
你可以试试 sum(y > 2 for y in x)
这个写法。
或者,正如@Jochen所建议的,为了防止使用一些不常见的第三方类,可以用这个方法:
sum(1 for y in x if y > 2)