Python: Тізімдер
Сыныпта 30 оқушының бағасын сақтау керек делік. 8-сыныптағы біліммен не істейсің? baga1, baga2, baga3... baga30 — отыз айнымалы жасайсың ба?! Ал орташасын есептеу үшін отызын да қолмен қосасың ба? Азап! Программалаудың жауабы — ТІЗІМ: отыз баға БІР атаумен сақталады, ал циклмен өңдеу үш-ақ жол. Бұл сабақтан бастап Python-ның ең қуатты құрылымдарының бірін меңгереміз — 9-сыныптың бүкіл программалау бөлімі осыған құрылады.
Тізім (list) — бір атаумен сақталатын, РЕТТЕЛГЕН мәндер жиынтығы. Әр мәні — элемент деп аталады.
bagalar = [5, 4, 5, 3, 5] esimder = ['Аружан', 'Дәулет', 'Мадина'] aralas = ['Али', 9, 4.5, True] bos = []
Тізім тік жақшамен [] жасалады, элементтер үтірмен бөлінеді. Python тізімі әртүрлі типтегі мәндерді (сан, жол, логикалық мән) бірге сақтай алады. Бос тізім де жарамды — оны кейін толтыруға болады.
Индекс — элементтің тізімдегі реттік нөмірі. Python-да индекстеу НӨЛДЕН басталады: бірінші элемент — [0], екінші — [1]...
sandar = [10, 20, 30, 40, 50] print(sandar[0]) # 10 — бірінші print(sandar[2]) # 30 — үшінші print(sandar[-1]) # 50 — соңғы print(sandar[-2]) # 40 — соңынан екінші
ТЕРІС индекс соңынан санайды: [-1] — соңғы, [-2] — соңынан екінші. Бұл соңғы элементке len-сіз қол жеткізудің ыңғайлы жолы.
| Элемент | 10 | 20 | 30 | 40 | 50 |
|---|---|---|---|---|---|
| Индекс | 0 | 1 | 2 | 3 | 4 |
| Теріс индекс | −5 | −4 | −3 | −2 | −1 |
Тізім — ӨЗГЕРМЕЛІ құрылым: кез келген элементті индексі арқылы жаңа мәнмен алмастыруға болады.
bagalar = [5, 4, 5, 3, 5] bagalar[3] = 4 # 3-индекстегі 3-ті 4-ке ауыстырдық print(bagalar) # [5, 4, 5, 4, 5] print(len(bagalar)) # 5 — элементтер саны
len(тізім) — тізімдегі элементтер санын қайтаратын функция. Соңғы элементтің индексі әрқашан
len(тізім) - 1.
Кесінді — тізімнің бөлігін алу:
тізім[басы:соңы]. «Басы» индексі КІРЕДІ, «соңы» индексі КІРМЕЙДІ.
a = [1, 2, 3, 4, 5, 6] print(a[1:4]) # [2, 3, 4] — 1-ден 4-ке дейін print(a[:3]) # [1, 2, 3] — басынан үшеу print(a[3:]) # [4, 5, 6] — 3-тен соңына дейін
Тізімнің күші 8-сыныптағы циклдармен қосылғанда ашылады. Аралаудың екі жолы:
# 1-тәсіл: элементтер бойынша bagalar = [5, 4, 5, 3, 5] for b in bagalar: print(b) # 2-тәсіл: индекстер бойынша for i in range(len(bagalar)): print(i, bagalar[i])
Қашан қайсысы? Элементтерді тек ОҚУ керек болса — 1-тәсіл (қысқа, түсінікті). Элементтерді ӨЗГЕРТУ немесе индексі керек болса — 2-тәсіл: bagalar[i] = bagalar[i] + 1.
bagalar = [5, 4, 3] for i in range(len(bagalar)): print(i + 1, '-оқушы:', bagalar[i])Жауабы: «1 -оқушы: 5», «2 -оқушы: 4», «3 -оқушы: 3».
Тізім генераторы — толтырылған тізімді бір жолмен құру тәсілі:
[өрнек for айнымалы in дереккөз]. Классикалық цикл жазудан гөрі қысқа әрі тиімді.
| Классикалық тәсіл | Генератор тәсілі |
|---|---|
s = []for i in range(1,10):s.append(i) | s = [i for i in range(1,10)] |
Екеуінің нәтижесі бірдей: [1, 2, 3, 4, 5, 6, 7, 8, 9]. Генераторды массивтегі мәндерді өзгертіп жаңа тізім жасауда да қолдануға болады: a = [5, -5, 2, -2] үшін b = [i**3 for i in a] — әр элементтің кубынан тұратын жаңа тізім: [125, -125, 8, -8].
- Тізім — бір атаумен сақталатын реттелген мәндер:
a = [10, 20, 30]. - Индекс 0-ден басталады; теріс индекс соңынан санайды (a[-1] — соңғы).
- len(a) — элементтер саны; соңғы индекс — len(a)−1; жоқ индекс — IndexError.
- Кесінді a[басы:соңы] — соңғы индекс кірмейді.
- Аралау:
for x in a(оқу) немесеfor i in range(len(a))(өзгерту).