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

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

collections модулу

Күнүмдүк саноону, топтоштурууну жана кезектер менен иштөөнү жеңил кылган атайын контейнерлер

Негизги идея: Курулган dict жана list дээрлик баарын аткарат, бирок стандарттык collections модулунан үч атайын контейнер сиз болбосо күн сайын кол менен жаза турган шаблон кодду жоёт. Counter нерселерди санайт, defaultdict жок ачкычтар үчүн маанини автоматтык түрдө коёт, ал эми deque эки четинен туруктуу убакытта кошот жана өчүрөт. Алардын бири да экзотикалык эмес; ар бири — сиз мурунтан билген жөнөкөй маалымат структурасы, анда тажатма бөлүктөр сиз үчүн жасалып бүткөн.
Аягында сиз төмөнкүлөрдү жасай аласыз:
  • Counter менен нерселерди санап, эң көп кездешкендерин окуу,
  • defaultdict менен KeyError жок топтоштуруу жана маанилерди топтоо,
  • deque менен ылдам кезектерди жана стектерди куруу,
  • deque.popleft() эмне үчүн list.pop(0) дан жакшы экенин түшүндүрүү,
  • тапшырмага туура контейнерди тандоо.

1. Эмне үчүн жөнөкөй dict жана list дан чыгуу керек?

Сиз мурунтан эле сөздүктөрдү жана тизмелерди ишенимдүү түзөсүз. Бирок кээ бир үлгүлөр кайра-кайра кайталанат: ар бир маанинин канча жолу кездешкенин саноо, нерселерди кайсы бир касиет боюнча топторго чогултуу же тизмени башынан элемент өчүрүлүүчү кезек катары колдонуу. Алардын ар бири таза Python да таза чечимге ээ жана ар биринин тажатма майда-чүйдөсү бар.

Кол менен саноо ачкычты көбөйтүүдөн мурун анын бар экенин текшерүүнү билдирет:

counts = {}
for word in words:
    if word not in counts:
        counts[word] = 0
    counts[word] += 1

Кол менен топтоштуруу да ошондой формага ээ — ачкычты биринчи жолу көргөндө бош тизмени түзүшүңүз керек. Ал эми жөнөкөй тизмени кезек катары колдонуу байкалбай жай: list.pop(0) ар бир калган элементти бир орунга солго жылдырат, ошондуктан n элементтүү тизменин башынан өчүрүү ар жолу O(n) турат.

collections модулу так ушул майда-чүйдөлөрдү жоюучу үч контейнерди берет. Сиз аларды бир жолу импорттойсуз жана шаблон код жоголот:

from collections import Counter, defaultdict, deque

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

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

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

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