Можно ли использовать лямбда-выражение для подсчета интересующих меня элементов? Например, когда мне нужно посчитать элементы в списке, который больше двух, я попробовал этот код, который возвращает 0.
x = [1,2,3] x.count(lambda x: x > 2)
Примечание: "больше чем" - это > ... => - недопустимый оператор.
>
=>
Попробуйте sum(y > 2 for y in x)
sum(y > 2 for y in x)
Или, как предлагает @Jochen, для защиты от нетрадиционных классов n-party, используйте это:
sum(1 for y in x if y > 2)
Вы можете попробовать любой из следующих
len([y for y in x if y > 2])
или
len(filter(lambda y: y > 2, x))
или лучше
sum( y > 2 for y in x )
x = [1,2,3] reduce(lambda a,i: a+1 if (i>2) else a, x, 0)
Это не создаст новый список.a - переменная аккумулятора, i - элемент из списка, а 0 в конце - начальное значение аккумулятора.
a
i
0