使用 Lambda 表达式在 Python 中计数感兴趣的元素

49 投票
3 回答
44921 浏览
提问于 2025-04-17 03:04

我可以用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)

撰写回答