Мазмунга өтүү

Сабактын башталышы

Lambda, map, filter, reduce

Кичинекей анонимдик функциялар жана маалыматты өзгөртүүчү функционалдык үчтүк

Негизги идея: lambda — бул бир сапка жазылган кичинекей, атсыз функция. map, filter жана reduce — булар жогорку тартиптеги функциялар: алар башка функцияны кабыл алып, аны бүтүн ырааттуулукка колдонуп, аны өзгөртөт, андан элементтерди тандап алат же аны бир мааниге жыйнайт.
Аягында сиз төмөнкүлөрдү жасай аласыз:
  • lambda жазуу жана ал качан пайдалуу, качан эмес экенин билүү,
  • ырааттуулуктун ар бир элементин map менен өзгөртүү,
  • filter менен керектүү элементтерди гана калтыруу,
  • functools.reduce менен ырааттуулукту бир маниге жыйноо,
  • окулуштун жагынан comprehension же жөнөкөй циклге салыштырып чечим кабыл алуу.

1. lambda деген эмне?

lambda — бул анонимдик функция: аты жок, керек болгон жерде эле аныкталган функция. Синтаксис: lambda ачкыч сөзү, андан кийин параметрлер, эки чекит жана мааниси автоматтык түрдө кайтарылуучу бир туюнтма.

double = lambda x: x * 2
print(double(5))     # 10

Бул lambda төмөнкү аталган функцияга так барабар:

def double(x):
    return x * 2

lambda бир нече параметрди үтүр менен кабыл ала алат:

add = lambda a, b: a + b
print(add(3, 4))     # 7
lambda так бир туюнтманы камтыйт. Анда return ачкыч сөзү жок (натыйжа сиз үчүн кайтарылат), жана ага ыйгаруу, циклдер же бир нече нускама коюуга болбойт. Алар керек болгондо def колдонуңуз.

2. map: ар бир элементти өзгөртүү

map(function, iterable) ар бир элементке function колдонуп, натыйжаларды берет. Python 3те жалкоо итератор (map объекти) кайтарылат, ошондуктан маанилерди көрүү үчүн аны адатта list() менен ороп коёбуз.

nums = [1, 2, 3, 4]
squares = list(map(lambda n: n * n, nums))
print(squares)       # [1, 4, 9, 16]

Функция милдеттүү түрдө lambda болбошу мүмкүн — каалаган чакырылуучу объект, анын ичинде орнотулгандар да иштейт:

prices = ["10", "25", "7"]
as_int = list(map(int, prices))
print(as_int)        # [10, 25, 7]

map бир нече ырааттуулукту бир убакта кыдыра алат; анда функция ар биринен бирден аргумент алат:

a = [1, 2, 3]
b = [10, 20, 30]
sums = list(map(lambda x, y: x + y, a, b))
print(sums)          # [11, 22, 33]

Бул сабакты YourAIZone платформасында улантыңыз

Толук сабакта — толук түшүндүрмө, чыгарылган мисалдар, көп кездешкен каталар, заматта текшерилүүчү тесттер жана ЖИ-репетитор. Конок катары дароо баштаңыз же прогрессти сактоо үчүн аккаунт түзүңүз.

Толук сабакта

  • Толук түшүндүрмө
  • Чыгарылган мисалдар
  • Көп кездешкен каталар жана алардан кантип качуу керек
  • Тест суроолору: 15
  • Тема боюнча суроолорго жооп берген ЖИ-репетитор
  • Окуучу, ата-эне жана мугалим үчүн прогрессти көзөмөлдөө