Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Как использовать lambda вместе с методом count? Например, если я хочу посчитать количество буквенных символов в строке?

ПомощьPython
Анонимный вопрос
  ·   · 31,5 K
старший разработчик в pseven.io  · 15 мар 2021

Хитрость лямбда-функций в питоне в том, что для их описания мы можем использовать только одно выражение. Иными словами, ваше выражение может быть сколь угодно сложным, но его должно быть возможно передать в функцию одним аргументом.

Это провоцирует писать код в декларативном стиле. Вот как можно написать выражение, считающее количество букв в переданной строке:

import re
count_letters = lambda str: len(re.findall(r'[А-Яа-я]', str))

print(count_letters('Абв 123 деж')) # 6

count() же это метод списка или строки, который ищет количество вхождений. Он принимает не предикат, а только конкретное значение, поэтому использование его тяготеет к императивному стилю: сначала сформировать список нужных букв, потом перебирать их по текущей строке, потом сложить получившиеся результаты — что в данном случае не есть оптимальный путь решения задачи.

В общем же случае (не применительно к данной задаче) вызов метода count() внутри лямбда-функции происходит так же, как и вызов любого другого метода:

count_bananas = lambda list: list.count('banana')

print(count_bananas(['banana', 'banana', 'apple'])) # 2
Что-то осталось непонятно? Спроси в нашей группе в Телеграме!Перейти на t.me/jstsmentor
Мне очень нравится и интересно программирование...  · 15 мар 2021
Абсолютно всё не удастся поместить в одну лямбду, сначала потребуется подготовка для её запуска, а потом доработка. Вот мой вариант решения этой задачи, он наверняка не самый лучший, но большего я предложить не могу. a =... Читать далее
Программист-любитель = )  · 13 июл 2021
На счёт лямбды не знаю, но можно генератором сделать: lit = [chr(x) for x in range(ord('а'), ord('я') + 1)]+\ ['ё']+[chr(x) for x in range(ord('a'), ord('z') + 1)] string = '100 бутылок Sprite' print(sum(string.lower().count(x... Читать далее