Map() a lambda funkce
Zatím jsi používal/a lambda funkce k psaní krátkých a jednoduchých funkcí a také k předefinování funkcí s jednoduchou funkcionalitou. Nejlepší využití lambda funkcí je ale tehdy, kdy chceš tuto jednoduchou funkcionalitu anonymně vložit do větších výrazů. To znamená, že funkcionalita není uložena v prostředí, na rozdíl od funkce definované pomocí def. Abys tuto myšlenku lépe pochopil/a, použiješ lambda funkci v kontextu funkce map().
Z videa si pamatuješ, že map() aplikuje funkci na objekt, například na seznam. Tady můžeš pomocí lambda funkcí definovat funkci, kterou map() použije ke zpracování objektu. Například:
nums = [2, 4, 6, 8, 10]
result = map(lambda a: a ** 2, nums)
Vidíš, že lambda funkce, která umocní hodnotu a na druhou, je předána funkci map() spolu se seznamem čísel nums. Map objekt, který vznikne voláním map(), je uložen v proměnné result. Teď si procvičíš použití lambda funkcí spolu s map(). V tomto cvičení namapuješ funkcionalitu funkce add_bangs(), kterou jsi definoval/a v předchozích cvičeních, na seznam řetězců.
Toto cvičení je součástí kurzu
Úvod do funkcí v Pythonu
Pokyny k cvičení
- Ve volání
map()předej lambda funkci, která ke řetězciitempřipojí řetězec'!!!'; předej také seznam řetězcůspells. Výsledný map objekt přiřaď do proměnnéshout_spells. - Převeď
shout_spellsna seznam a vypiš ho.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# Create a list of strings: spells
spells = ["protego", "accio", "expecto patronum", "legilimens"]
# Use map() to apply a lambda function over spells: shout_spells
____ = map(____, ____)
# Convert shout_spells to a list: shout_spells_list
____
# Print the result
print(shout_spells_list)