сделать правильно, чтобы лямбда использовала конкретную букву из цикла, а не только последнюю?
checks: = []
for letter in ("x", "y", "z"):
checks.append((
letter, lambda x: f"{x.count(letter)}{letter}"
))
word = "xyzzz"
print([f"{letter}: {check(word)}" for letter, check in checks])
Не надо так делать, сделай функцию, подготовь данные, и потом вызывай это, а не смешивай
я прост хочу сгенерить список функций, которые потом можно будет использовать в all() или any() т.е. это упрощенный пример, в первом цикле может быть гораздо больше условий
О, замыкания
checks = [] for letter in ("x", "y", "z"): checks.append(( letter, (lambda letter: lambda x: f"{x.count(letter)}{letter}")(letter) )) word = "xyyzzz" print([f"{letter}: {check(word)}" for letter, check in checks])
checks: = [] for letter in ("x", "y", "z"): checks.append(( letter, lambda x, letter=letter: f"{x.count(letter)}{letter}" )) word = "xyzzz" print([f"{letter}: {check(word)}" for letter, check in checks]) но лучше функцию вынести наружу и через partial применить
прикольно я похожее сделал через partial
о, не знал, что в лямбдах можно юзать дефолтное значение, спасибо 👍
Обсуждают сегодня