🐍 Π‘Π°ΠΌΠΎΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒ ΠΏΠΎ Python для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…. Π§Π°ΡΡ‚ΡŒ 12: АнонимныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π˜Π·ΡƒΡ‡Π°Π΅ΠΌ особСнности лямбда-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Python: разбираСмся, ΠΊΠΎΠ³Π΄Π° стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ вмСсто ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ…, ΠΈ Π² ΠΊΠ°ΠΊΠΈΡ… случаях lambda-выраТСния Π»ΡƒΡ‡ΡˆΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ списковыми Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ – 10 практичСских Π·Π°Π΄Π°Π½ΠΈΠΉ с Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ.

ΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ названия

Лямбда-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΌΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° lambda, Π½Π΅ давая Π΅ΠΉ Π½Π°Π·Π²Π°Π½ΠΈΠ΅. ΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° «лямбда» связано с Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ систСмой Ξ»-исчислСния.

НазначСниС ΠΈ особСнности Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Python

1. Лямбда-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² качСствС ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ³ΠΎ способа опрСдСлСния ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… def Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. НапримСр, Ρ‚Π°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ стандартная функция для вычислСния дискриминанта:

def discr(b, a, c):
    return b ** 2 - 4 * a * c

А Ρ‚Π°ΠΊ – анонимная:

lambda b, a, c: b ** 2 - 4 * a * c

2. АнонимныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ, Π² Ρ‚ΠΎΠΌ участкС ΠΊΠΎΠ΄Π°, Π³Π΄Π΅ Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹. Если Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ, слСдуСт Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ def. Π§Π°Ρ‰Π΅ всСго Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ совмСстно со встроСнными функциями map(), filter(), sorted(), min(), max() ΠΈ Ρ‚. ΠΏ. ОсобСнно ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ лямбда-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для сортировки:

mydict = {'слива':5, 'папайя':6, 'Π»ΡƒΠΊ':56, 'маракуйя':78, 'Π΅ΠΆΠ΅Π²ΠΈΠΊΠ°':45}

print('Π”ΠΎ сортировки: ', mydict)
sorted_mydict = dict(sorted(mydict.items(), key=lambda item: len(item[0])))
print('ПослС сортировки: ', sorted_mydict)

Π’Ρ‹Π²ΠΎΠ΄:

Π”ΠΎ сортировки:  {'слива': 5, 'папайя': 6, 'Π»ΡƒΠΊ': 56, 'маракуйя': 78, 'Π΅ΠΆΠ΅Π²ΠΈΠΊΠ°': 45}
ПослС сортировки:  {'Π»ΡƒΠΊ': 56, 'слива': 5, 'папайя': 6, 'Π΅ΠΆΠ΅Π²ΠΈΠΊΠ°': 45, 'маракуйя': 78}
🐍 Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° питониста
Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° питониста»
πŸπŸŽ“ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° собСса ΠΏΠΎ Python
ΠŸΠΎΠ΄Ρ‚ΡΠ½ΡƒΡ‚ΡŒ свои знания ΠΏΠΎ Python Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° собСса ΠΏΠΎ PythonΒ»
🐍🧩 Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ Python
Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ Python для ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ PythonΒ»

3. ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ лямбда-функциям ΠΈΠΌΠ΅Π½ Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкС, Π½ΠΎ считаСтся ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ Π² соотвСтствии с рСкомСндациями PEP8, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΡ‚ самой ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ анонимности: Ρ‚Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ, ΠΈ поэтому ΠΈΠΌΠ΅Π½Π° ΠΈΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹:

#МоТно, Π½ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ
max_num = lambda a, b : a if a > b else b

#ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ
def max_num(a, b):
    return a if a > b else b 

4. АнонимныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ сразу послС опрСдСлСния. Π—Π΄Π΅ΡΡŒ лямбда-функция выполняСт сортировку списка словарСй ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ Ρ†Π΅Π½Ρ‹:

fruit = [
    {'Π½Π°Π·Π²Π°Π½ΠΈΠ΅':'Π²ΠΈΠ½ΠΎΠ³Ρ€Π°Π΄',
     'Ρ†Π΅Π½Π°': 230,
     'количСство': 412
    },
    {'Π½Π°Π·Π²Π°Π½ΠΈΠ΅':'ΠΌΠ°Π½Π³ΠΎ',
     'Ρ†Π΅Π½Π°': 350,
     'количСство': 21
    },
    {'Π½Π°Π·Π²Π°Π½ΠΈΠ΅':'Π±Π°Π½Π°Π½Ρ‹',
     'Ρ†Π΅Π½Π°': 70,
     'количСство': 234
    },
    {'названиС':'яблоки',
     'Ρ†Π΅Π½Π°': 66,
     'количСство': 213
    },
    ]
print(sorted(fruit, key=lambda item: item['Ρ†Π΅Π½Π°']))

Π’Ρ‹Π²ΠΎΠ΄:

[{'Π½Π°Π·Π²Π°Π½ΠΈΠ΅': 'яблоки', 'Ρ†Π΅Π½Π°': 66, 'количСство': 213}, {'Π½Π°Π·Π²Π°Π½ΠΈΠ΅': 'Π±Π°Π½Π°Π½Ρ‹', 'Ρ†Π΅Π½Π°': 70, 'количСство': 234}, {'Π½Π°Π·Π²Π°Π½ΠΈΠ΅': 'Π²ΠΈΠ½ΠΎΠ³Ρ€Π°Π΄', 'Ρ†Π΅Π½Π°': 230, 'количСство': 412}, {'Π½Π°Π·Π²Π°Π½ΠΈΠ΅': 'ΠΌΠ°Π½Π³ΠΎ', 'Ρ†Π΅Π½Π°': 350, 'количСство': 21}]

5. АнонимныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π½ΠΎ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ выраТСния. Если Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ лямбда-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²Π° ΠΈ Π±ΠΎΠ»Π΅Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ:

lambda a : a + 10, a - 5

Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ± ошибкС:

NameError: name 'a' is not defined

6. Лямбда-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² Ρ‚Π΅Π»ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π­Ρ‚Π° функция Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π²Π°ΠΈΠ²Π°Ρ‚ΡŒ всС ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Π΅ значСния:

def my_function(n):
  return lambda a : a * n
double = my_function(2)
print(double(15))

# Π’Ρ‹Π²ΠΎΠ΄:
30

7. Π’ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Ρ… функциях ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ условия ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ сравнСния. Π—Π΄Π΅ΡΡŒ анонимная функция добавляСт слово гласная ΠΈΠ»ΠΈ согласная Π² список Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, являСтся Π»ΠΈ Π±ΡƒΠΊΠ²Π° Π² строкС st гласной ΠΈΠ»ΠΈ согласной:

st = 'ΡΠΆΠ΅Ρ€Ρ‚Ρ‹ΡƒΠΈΠΎΠΏΡˆΡ‰Π°ΡΠ΄Ρ„Π³Ρ‡ΠΉΠΊΠ»Π·Ρ…Ρ†Π²Π±Π½ΠΌ'
vowels = 'Π°ΠΈΠ΅Ρ‘ΠΎΡƒΡ‹ΡΡŽΡ'
result = list(map(lambda x: 'гласная' if x in vowels else 'согласная', st))
print(result)

Π’Ρ‹Π²ΠΎΠ΄:

['гласная', 'согласная', 'гласная', 'согласная', 'согласная', 'гласная', 'гласная', 'гласная', 'гласная', 'согласная', 'согласная', 'согласная', 'гласная', 'согласная', 'согласная', 'согласная', 'согласная', 'согласная', 'согласная', 'согласная', 'согласная', 'согласная', 'согласная', 'согласная', 'согласная', 'согласная', 'согласная', 'согласная']

А Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ анонимная функция Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΈΠ· исходного списка Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ числа, прСвосходящиС 6:

numbers = [7, 8, 6, 9, 4, -6, 2, 0, -3, -12, -5, -2, 12, 77, 32]
print(list(filter(lambda x: x > 6 and x % 2 == 0, numbers)))

8. АнонимныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ замыканиями – ΠΈΠΌ доступны внСшниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ внутрСнняя лямбда-функция ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ список ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ»ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт Π² зависимости ΠΎΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° внСшнСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

def get_min_or_max(value='max'):
    return eval(f'lambda x: {value}(x)')
 
lst = [3, 5, -22, -15, 100, 7, 8, 9, 12, 98]
 
max_func = get_min_or_max()
min_func = get_min_or_max('min')
print(max_func(lst))
print(min_func(lst))

Π’Ρ‹Π²ΠΎΠ΄:

100
-22

9. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ return, pass, assert ΠΈ raise.

10. Подобно ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ функциям, лямбда-выраТСния ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²:

  • ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅;
  • ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅;
  • ΡΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹Π΅ (ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ + ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅);
  • *args;
  • **kwargs.

11. Лямбда-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для провСдСния ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² списках:

ops = [(lambda x, y: x + y), (lambda x, y: x - y),
       (lambda x, y: x * y), (lambda x, y: x / y)]

x, y = int(input()), int(input())
for i in range(len(ops)):
    print(ops[i](x, y))

# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄Π° для x = 12, y = 15:
27
-3
180
0.8

А Ρ‚Π°ΠΊΠΆΠ΅ Π² словарях:

ops = {'neg': lambda x: abs(x), 'pos': lambda x: x / 2, 'zero': lambda x: x + 5}
lst = list(map(int, input().split()))
for i in lst:
    if i < 0:
        print(ops['neg'](i))
    elif i > 0:
        print(ops['pos'](i))
    else:
        print(ops['zero'](i))

# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄Π° для 4 -5 0 6 -3:
2.0
5
5
3.0
3

12. Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях лямбда-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ списковыми Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, здСсь анонимная функция ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для возвСдСния элСмСнтов списка Π² ΠΊΡƒΠ±:

my_list = [3, 5, 6, 7, 2, 8, 9, 10]
cubes = map(lambda x: pow(x, 3), my_list) # ΠΈΠ»ΠΈ x ** 3
print(list(cubes))

Однако Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ‰Π΅:

print([i ** 3 for i in my_list])


Π’Ρ‹Π²ΠΎΠ΄:

[27, 125, 216, 343, 8, 512, 729, 1000]

А здСсь лямбда-функция ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²Ρ‹Π±ΠΎΡ€Π° Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… чисСл ΠΈΠ· списка:

my_list = [4, 2, 3, 5, 16, 12, 2, 8, 9, 10]
print(list(filter(lambda x: x % 2 == 0, my_list)))

Π’Ρ‹Π²ΠΎΠ΄:

[4, 2, 16, 12, 2, 8, 10]

Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ даст простоС списковоС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅:

print([i for i in my_list if i % 2 == 0])

ΠžΡ‡Π΅Π½ΡŒ часто лямбда-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ совмСстно с filter():

lst = ['Ρ€ΠΎΠ»Π»', 'яблоко', 'ΠΊΠ½ΠΈΠ³Π°', 'ΡˆΠ°Ρ€', 'Π½ΠΎΡƒΡ‚Π±ΡƒΠΊ']

print(list(filter(lambda x: len(x) > 4, lst)) )
print(list(filter(lambda x: 'Ρ€' in x, lst)))

Π’ этом случаС списковыС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ‚Π°ΠΊΠΆΠ΅ выглядят ΠΏΡ€ΠΎΡ‰Π΅:

print([i for i in lst if len(i) > 4])
print([i for i in lst if 'Ρ€' in i])

Π’Ρ‹Π²ΠΎΠ΄:

['яблоко', 'ΠΊΠ½ΠΈΠ³Π°', 'Π½ΠΎΡƒΡ‚Π±ΡƒΠΊ']
['Ρ€ΠΎΠ»Π»', 'ΡˆΠ°Ρ€']
***

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ! Π’Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ·ΡƒΡ‡ΠΈΠ»ΠΈ Ρ‚Π΅ΠΎΡ€ΠΈΡŽ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Ρ… lambda-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ всё ΠΎΠ± ΠΈΡ… синтаксисС, 12 ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… особСнностях ΠΈ Π΄Π°ΠΆΠ΅ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΈΡ… Π»ΡƒΡ‡ΡˆΠ΅ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌΠΈ конструкциями. Π£ вас Π΅ΡΡ‚ΡŒ вся нСобходимая тСорСтичСская Π±Π°Π·Π°.

Но тСория β€” это лишь ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° ΠΏΡƒΡ‚ΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎ-настоящСму ΠΎΠ²Π»Π°Π΄Π΅Ρ‚ΡŒ этим ΠΌΠΎΡ‰Π½Ρ‹ΠΌ инструмСнтом, Π½ΡƒΠΆΠ½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°. Π’ ΠΏΠΎΠ»Π½ΠΎΠΉ вСрсии ΡƒΡ€ΠΎΠΊΠ° вас ΠΆΠ΄ΡƒΡ‚:

  • 10 практичСских Π·Π°Π΄Π°Ρ‡: Π’Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ лямбда-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ β€” ΠΎΡ‚ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚ΠΎΠΉ сортировки словарСй ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎ элСгантных алгоритмичСских вычислСний.
  • Π—Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ Π½Π°Π²Ρ‹ΠΊΠΎΠ²: Π’Ρ‹ Π½Π° Π΄Π΅Π»Π΅ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, ΠΊΠ°ΠΊ лямбды Π² ΠΎΠ΄Π½Ρƒ строку Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠ΅ Ρ†ΠΈΠΊΠ»Ρ‹ ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΊΠΎΠ΄ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Π΅Π΅.

Π›Π£Π§Π¨Π˜Π• БВАВЬИ ПО Π’Π•ΠœΠ•

admin
11 дСкабря 2018

ООП Π½Π° Python: ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python допускаСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π½ΠΎ Π² Π΅Π³ΠΎ основС...
admin
28 июня 2018

3 самых Π²Π°ΠΆΠ½Ρ‹Ρ… сфСры примСнСния Python: возмоТности языка

БущСствуСт мноТСство областСй примСнСния Python, Π½ΠΎ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ особСнно...
admin
13 фСвраля 2017

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python: ΠΎΡ‚ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ° Π΄ΠΎ профСссионала

Пошаговая инструкция для всСх, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒΒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python...