Используйте лямбда-выражение для подсчета элементов, которые меня интересуют в Python - PullRequest
24 голосов
/ 26 сентября 2011

Можно ли использовать лямбда-выражение для подсчета интересующих меня элементов? Например, когда мне нужно посчитать элементы в списке, который больше двух, я попробовал этот код, который возвращает 0.

x = [1,2,3]
x.count(lambda x: x > 2)

Ответы [ 3 ]

26 голосов
/ 26 сентября 2011

Примечание: "больше чем" - это > ... => - недопустимый оператор.

Попробуйте sum(y > 2 for y in x)

Или, как предлагает @Jochen, для защиты от нетрадиционных классов n-party, используйте это:

sum(1 for y in x if y > 2)

12 голосов
/ 26 сентября 2011

Вы можете попробовать любой из следующих

len([y for y in x if y > 2])

или

len(filter(lambda y: y > 2, x))

или лучше

sum( y > 2 for y in x )
0 голосов
/ 15 марта 2019
x = [1,2,3]
reduce(lambda a,i: a+1 if (i>2) else a, x, 0)

Это не создаст новый список.a - переменная аккумулятора, i - элемент из списка, а 0 в конце - начальное значение аккумулятора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...