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

Итераторлор жана генераторлор

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

Итераторлор жана генераторлор

Маанилерди бирден, талап боюнча чыгарыңыз, бүт тизмени түзбөстөн

Негизги идея: for цикли тизмени, файлды же range'ди кантип айланып өтүүнү сыйкырдуу түрдө билбейт. Көшөгө артында Python объекттен анын итераторун сурайт, андан кийин ошол итератордон кийинки маанини кайра-кайра сурай берет, ал «токто» деп айтмайынча. Генератор — мындай объектти түзүүнүн эң жөнөкөй жолу: сиз кадимки көрүнгөн функция жазасыз, return'ду yield'ге алмаштырасыз, ошондо Python сизге жалкоо, эс тутумга үнөмдүү маанилер агымын берет.
Аягында сиз төмөнкүлөрдү жасай аласыз:
  • итератор протоколун түшүндүрүү (__iter__, __next__, StopIteration),
  • итерациялануучу объектти итератордон айырмалоо,
  • yield менен генератор-функция жазуу жана анын кантип токтоп, кайра иштээрин байкоо,
  • жалкоо эсептөө жөнүндө ой жүгүртүү жана эмне үчүн ал эс тутумду үнөмдөгөнүн түшүнүү,
  • ыкчам генератордук туюнтмаларды колдонуу жана алар тизмелик түзүлүштөн качан жакшы экенин билүү.

1. for циклинде чындыгында эмне болот

Сиз for x in items: дегенди жүздөгөн жолу жаздыңыз. Чындыгында Python эки кадамдуу бий бийлейт. Адегенде ал итератор алуу үчүн iter(items) чакырат. Андан кийин ар бир өтүүдө ошол итератордон бир маани тартып алуу үчүн next() чакырат. Итератордо эч нерсе калбаганда, ал атайын өзгөчө кырдаалды — StopIteration — көтөрөт, ошондо цикл тынч аяктайт.

Бул бийди кол менен аткарса болот:

nums = [10, 20, 30]
it = iter(nums)        # тизмеден итератор алуу
print(next(it))        # 10
print(next(it))        # 20
print(next(it))        # 30
print(next(it))        # StopIteration көтөрөт

for цикли — так ушул ыкма, бирок StopIteration сиз үчүн кармалат. Муну түшүнүү бул темадагы дээрлик бардык нерсени түшүндүрөт.

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

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

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

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