- Siyahı yaratmaq, klaviaturadan daxil edilən n ədədi boş siyahıya yığmaq və elementə indekslə (mənfi indeks də daxil) müraciət etmək.
- Siyahını qiymətlə və indekslə gəzmək,
a[i - 1]vəa[i + 1]qonşularından siyahının sərhədindən çıxmadan istifadə etmək. append,insert,remove,pop,reverse,sort,count,indexmetodlarını vəlen,sum,min,maxfunksiyalarını tətbiq etmək.- Elementləri dövrdə dəyişən proqramın nəticəsini addım-addım izləmək və şərtə görə yeni siyahı qurmaq.
«Sinifdə 25 şagird var — onların balları üçün 25 ayrı dəyişən lazımdır?» Xeyr: bütün qiymətləri bir ad altında saxlayan siyahı var. DİM-in informatika tapşırıqlarında siyahılar 2025–2026-cı illərin bütün qəbul imtahanlarında olub: proqram elementləri dövrdə dəyişir, sonda print(a) yazır, beş cavab variantı isə çox vaxt bir-birindən cəmi bir elementlə fərqlənir. Yazılı hissədə də «n sayda tam ədəd boş siyahıya klaviaturadan daxil edilir…» cümləsi tez-tez görünür. Bu dərsdə siyahını elə öyrənəcəyik ki, hər elementin taleyini addım-addım izləyə biləsən.
Siyahı, element və indeks
Kvadrat mötərizədə vergüllə ayrılmış elementlər ardıcıllığı: a = [7, 3, 9, 3, 5]. Elementlərin sırası saxlanılır, eyni qiymət bir neçə dəfə ola bilər, siyahını isə yaradıldıqdan sonra dəyişmək olar: elementi əvəz etmək, əlavə etmək, silmək. Boş siyahı [] kimi yazılır.
Elementin siyahıdakı sıra nömrəsi; 0-dan başlayır. n elementli siyahıda indekslər 0, 1, …, n − 1-dir, a[i] isə i indeksli elementdir. Mənfi indekslər sondan sayılır: a[-1] sonuncu, a[-2] sondan ikinci elementdir.
len(a) = 5, sonuncu indeks len(a) - 1 = 4; a[4] və a[-1] eyni elementdir.Üç qaydanı yadda saxla. len(a) elementlərin sayını verir, ona görə sonuncu indeks len(a) - 1-dir; a[len(a)] yazsan, IndexError xətası alınar. a[i] = x mənimsətməsi elementi yerində əvəz edir — siyahının uzunluğu dəyişmir. x in a ifadəsi x qiymətinin siyahıda olub-olmadığını yoxlayır və True və ya False verir.
a = [7, 3, 9, 3, 5]
print(len(a), a[0], a[-1])
a[1] = a[1] * 10
a[-1] = a[0] + a[2]
print(a)
print(3 in a, 5 in a)▸ Gözlənilən nəticə
5 7 5 [7, 30, 9, 3, 16] True False
İmtahanda siyahı adətən klaviaturadan doldurulur. Ən çox iki forma görünür. Birincisi: əvvəlcə n, sonra hər biri ayrı sətirdə n ədəd — onda boş siyahı yaradılır və hər ədəd append ilə sona əlavə edilir. İkincisi: bütün qiymətlər bir sətirdə boşluqla — onda input().split(' ') sətri hissələrə bölür. Diqqət: split sətirlər siyahısı qaytarır, hesablamadan əvvəl onları int ilə ədədə çevirmək lazımdır.
# form 1: n, then n numbers, each on its own line
n = int(input())
a = []
for i in range(0, n):
a.append(int(input()))
# form 2: all numbers on one line, e.g. 12 5 8
b = input().split(' ')
for i in range(0, len(b)):
b[i] = int(b[i])input() ilə. Brauzerdə input() işləmir, ona görə növbəti nümunədə klaviaturadan gələcək sətirlər dəyişənlərdə verilib.lines = ['3', '4', '-2', '7'] # what the keyboard would give
n = int(lines[0])
a = []
for i in range(1, n + 1):
a.append(int(lines[i]))
print(a)
b = '12 5 8'.split(' ')
print(b, b[0] + b[1])
for i in range(0, len(b)):
b[i] = int(b[i])
print(b, b[0] + b[1])▸ Gözlənilən nəticə
[4, -2, 7] ['12', '5', '8'] 125 [12, 5, 8] 17
Siyahını dövrlə gəzmək: qiymətlə və indekslə
for x in a: dövründə x növbə ilə elementlərin qiymətlərini alır — oxumaq üçün rahatdır, amma x = … yazmaq siyahını dəyişmir, çünki x sadəcə surətdir. for i in range(0, len(a)): dövründə isə i indeksləri alır: a[i] elementin özüdür, onu dəyişmək, indeksini cəmə əlavə etmək və qonşularına baxmaq olar. DİM-in siyahı tapşırıqlarının çoxu ikinci formada yazılır.
a = [4, 7, 1, 8]
for x in a:
x = x * 2
print(a)
for i in range(0, len(a)):
a[i] = a[i] * 2
print(a)
s = 0
for i in range(0, len(a)):
if a[i] > 5:
s = s + i
print(s)▸ Gözlənilən nəticə
[4, 7, 1, 8] [8, 14, 2, 16] 4
Qonşu elementlərlə işləyərkən dövrün sərhədlərinə diqqət et: a[i + 1] yalnız i ≤ len(a) − 2 olduqda mövcuddur, a[i - 1] isə yalnız i ≥ 1 olduqda mənalıdır. i = 0 olanda a[i - 1] xəta vermir — o, a[-1], yəni sonuncu elementdir. Aşağıdakı cədvəl hansı başlığın nə üçün lazım olduğunu göstərir.
| Nə lazımdır | Dövrün başlığı | i-nin qiymətləri |
|---|---|---|
| hər element | for i in range(0, len(a)) | 0 … n − 1 |
a[i] və a[i + 1] | for i in range(0, len(a) - 1) | 0 … n − 2 |
a[i - 1] və a[i] | for i in range(1, len(a)) | 1 … n − 1 |
a[i - 1], a[i] və a[i + 1] | for i in range(1, len(a) - 1) | 1 … n − 2 |
range-in sağ sərhədi daxil deyil.a = [2, 5, 3, 1, 4, 9, 1, 7]
s = 0
for i in range(1, len(a) - 1):
if a[i] > a[i - 1] and a[i] > a[i + 1]:
s = s + a[i]
a[i] = 0
print(s, a)▸ Gözlənilən nəticə
17 [2, 0, 0, 1, 4, 0, 1, 7]
Yuxarıdakı proqramın nəticəsini müəyyən edin.
A) 14 [2, 0, 3, 1, 4, 0, 1, 7]
B) 17 [2, 0, 0, 1, 4, 0, 1, 7]
C) 17 [2, 5, 3, 1, 4, 9, 1, 7]
D) 21 [2, 0, 0, 1, 4, 0, 0, 7]
E) 14 [2, 5, 3, 1, 4, 9, 1, 7]
Həllini göstərHəllini gizlət
i 1-dən 6-ya qədər dəyişir (range(1, 7)). Hər addımda siyahının cari vəziyyətinə baxırıq:i = 1: 5 > 2 və 5 > 3 → s = 5, a[1] = 0
i = 2: 3 > 0 (a[1] artıq 0-dır) və 3 > 1 → s = 8, a[2] = 0
i = 3: 1 > 0, amma 1 > 4 deyil
i = 4: 4 > 1, amma 4 > 9 deyil
i = 5: 9 > 4 və 9 > 1 → s = 17, a[5] = 0
i = 6: 1 > 0, amma 1 > 7 deyil
Cavab: B. A variantı ilkin siyahıya baxanların səhvidir: onlar 3-ü nəzərə almır.
Siyahı metodları və hazır funksiyalar
Metod siyahının adından sonra nöqtə ilə yazılır: a.append(5). Funksiya isə siyahını mötərizədə qəbul edir: len(a). append, insert, remove, pop, reverse, sort metodları siyahının özünü dəyişir; count və index yalnız məlumat verir. Cədvəlin hər sətri yenidən a = [5, 2, 8, 2] siyahısından başlayır.
| Yazılış | Nə edir | Nəticə |
|---|---|---|
a.append(4) | 4-ü sona əlavə edir | [5, 2, 8, 2, 4] |
a.insert(1, 9) | 9-u 1 indeksli yerə qoyur, qalanlar sağa sürüşür | [5, 9, 2, 8, 2] |
a.remove(2) | 2 qiymətinin birinci rast gəldiyi yeri silir | [5, 8, 2] |
x = a.pop(0) | 0 indeksli elementi silir və qaytarır; a.pop() sonuncunu götürür | x = 5, [2, 8, 2] |
a.reverse() | sıranı tərsinə çevirir | [2, 8, 2, 5] |
a.sort() | artan sıra ilə düzür; a.sort(reverse=True) — azalan | [2, 2, 5, 8] |
a.count(2) | 2 neçə dəfə var | 2 |
a.index(8) | 8-in birinci indeksi | 2 |
len(a), sum(a) | elementlərin sayı, cəmi | 4, 17 |
min(a), max(a) | ən kiçik, ən böyük element | 2, 8 |
b = sorted(a) | yeni çeşidlənmiş siyahı; a dəyişmir | b = [2, 2, 5, 8] |
a = [5, 2, 8, 2]
a.append(4)
a.insert(1, 9)
a.remove(2)
x = a.pop()
print(a, x)
a.sort()
print(a, a.count(2), a.index(8))
print(len(a), sum(a), min(a), max(a))▸ Gözlənilən nəticə
[5, 9, 8, 2] 4 [2, 5, 8, 9] 1 2 4 24 2 9
Proqramın çap etdiyi ədədi müəyyən edin.a = [3, 8, 3, 5, 8, 1]a.remove(8)a.insert(2, a.pop())a.append(a.count(3))print(a.index(1) + a[-1] + len(a))
Həllini göstərHəllini gizlət
remove(8) birinci 8-i silir: [3, 3, 5, 8, 1].a.insert(2, a.pop()): əvvəlcə arqument hesablanır — pop() sonuncu 1-i götürür, a = [3, 3, 5, 8]; sonra 1 ədədi 2 indeksli yerə qoyulur: [3, 3, 1, 5, 8].count(3) = 2 sona əlavə edilir: [3, 3, 1, 5, 8, 2].a.index(1) = 2, a[-1] = 2, len(a) = 6.Cavab: 2 + 2 + 6 = 10.
Şərtə görə yeni siyahı. Siyahı və sətir
- 1Boş siyahı
Nəticə üçün dövrdən əvvəl
b = []yarat. - 2Dövr
İlkin siyahını qiymətlə (
for x in a) və ya indekslə (for i in range(0, len(a))) gəz. - 3Şərt
Hər element üçün şərti yoxla, məsələn
if x % 2 == 0:. - 4Əlavə et
Şərt ödənirsə,
b.append(...)ilə elementi (və ya ondan alınan qiyməti) sona əlavə et. - 5Çap et
Dövr bitəndən sonra
print(b)yaz — Python siyahını[6, 15, 9]şəklində, kvadrat mötərizə və vergüllərlə çap edir.
a = [12, 7, 30, 5, 18, 7]
b = []
for x in a:
if x % 2 == 0:
b.append(x // 2)
print(b)
c = []
for x in a:
if c.count(x) == 0:
c.append(x)
print(c, len(c))▸ Gözlənilən nəticə
[6, 15, 9] [12, 7, 30, 5, 18] 5
Siyahı ilə sətir arasında keçid DİM proqramlarında tez-tez lazım olur. list('2026') sətri simvollar siyahısına çevirir: ['2', '0', '2', '6']. ''.join(c) sətirlər siyahısını bir sətirdə birləşdirir (ayırıcı nöqtədən əvvəlki sətirdir). s.split(' ') sətri boşluqlarda kəsir. Ədədi tərsinə çevirmək üçün zəncir belədir: str(n) → list → reverse() → join → int.
n = 1720
c = list(str(n))
print(c)
c.reverse()
r = int(''.join(c))
print(r, n + r)
w = '12 5 40'.split(' ')
print(w, len(w))
print('-'.join(w))▸ Gözlənilən nəticə
['1', '7', '2', '0'] 271 1991 ['12', '5', '40'] 3 12-5-40
a = [6, 1, 4, 9, 4, 2, 7, 3]
b = [4, 7, 1]
for i in range(0, len(a) - 1):
if b.count(a[i]) > 0:
a[i + 1] = a[i + 1] + a[i]
print(a)▸ Gözlənilən nəticə
[6, 1, 5, 9, 4, 6, 7, 10]
Yuxarıdakı proqramın nəticəsini müəyyən edin.
A) [6, 1, 5, 14, 4, 6, 7, 10]
B) [6, 5, 13, 9, 6, 2, 10, 3]
C) [6, 1, 5, 9, 4, 6, 7, 10]
D) [6, 1, 5, 9, 4, 6, 7, 3]
E) [6, 1, 4, 9, 4, 2, 7, 3]
Həllini göstərHəllini gizlət
b.count(a[i]) > 0 şərti «a[i] b-də varmı?» deməkdir; i 0-dan 6-ya qədər dəyişir.i = 0: 6 b-də yoxdur.
i = 1: 1 var → a[2] = 4 + 1 = 5
i = 2: a[2] artıq 5-dir, b-də yoxdur (ilkin 4-ə baxan A-nı seçir)
i = 3: 9 yoxdur. i = 4: 4 var → a[5] = 2 + 4 = 6
i = 5: 6 yoxdur. i = 6: 7 var → a[7] = 3 + 7 = 10
Cavab: C. D variantı son addımı (i = 6) unudanların, B isə
a[i]-ni dəyişənlərin cavabıdır.a = [3, 5, 7, 8, 10, 12, 15, 17, 19]
s = 0
i = 1
while i < len(a) - 1:
if a[i] - a[i - 1] == a[i + 1] - a[i]:
s = s + i
i = i + 1
print(s)▸ Gözlənilən nəticə
12
Yuxarıdakı proqramın çap etdiyi ədədi müəyyən edin.
Həllini göstərHəllini gizlət
a[i] iki qonşusunun tam ortasında olur: soldan və sağdan fərqlər bərabərdir. i 1-dən 7-yə qədər dəyişir:i = 1: 5 − 3 = 2, 7 − 5 = 2 → s = 1
i = 2: 2 və 1 — yox; i = 3: 1 və 2 — yox
i = 4: 10 − 8 = 2, 12 − 10 = 2 → s = 1 + 4 = 5
i = 5: 2 və 3 — yox; i = 6: 3 və 2 — yox
i = 7: 17 − 15 = 2, 19 − 17 = 2 → s = 5 + 7 = 12
Cəmə qiymətlər yox, indekslər düşür. Cavab: 12.
- 1.a = [4, 1]; a.(7) əmrindən sonra a = [4, 1, 7]
- 2.a = [6, 2, 9]; x = a.(0) əmrindən sonra x = 6, a = [2, 9]
- 3.a = [2, 7, 7]; a.(7) əmrindən sonra a = [2, 7]
- 4.a = [3, 5, 3, 3]; a.(3) ifadəsinin qiyməti 3-dür
- 5.a = [8, 1, 5]; a.() əmrindən sonra a = [1, 5, 8]
- 6.a = [8, 1, 5]; (a) funksiyası 3 qaytarır
İmtahanda siyahı klaviaturadan daxil edilərdi; burada o, hazır verilib. Hər iki qonşusundan böyük olan elementləri (birinci və sonuncu element nəzərə alınmır) yeni b siyahısına yığ, b-ni çap et, sonra həmin elementlərin indekslərinin cəmini çap et.
a = [3, 9, 4, 4, 7, 2, 8, 1]
b = []
s = 0
# your loop here▸ Gözlənilən nəticə
[9, 7, 8] 11
a siyahısından təkrarları at: hər qiymət yalnız ilk dəfə rast gəldiyi yerdə qalsın, yeni u siyahısını çap et. Sonra a-da birdən çox dəfə rast gəlinən müxtəlif qiymətlərin sayını çap et.
a = [5, 3, 5, 2, 3, 5, 9]
u = []
k = 0▸ Gözlənilən nəticə
[5, 3, 2, 9] 2
İndekslər, len və in sətirlərdə də eyni cür işləyir — bunu «Sətirlər və onlar üzərində əməllər» dərsində gördün. Növbəti dərsdə, «Funksiya: def, parametrlər və return», siyahının hər elementini funksiyaya ötürən proqramları (a[i] = k(a[i])) oxuyacağıq. Kəsiklər (a[1:4]) və siyahı generatorları kimi əlavə imkanlar Python kursunun «Siyahılar» dərsindədir.
Əsas fikirlər
- İndekslər 0-dan
len(a) − 1-ə qədərdir;a[-1]sonuncu elementdir. - Klaviaturadan siyahı:
a = []və dövrdəa.append(int(input())); bir sətirdən —input().split(' ')vəint-ə çevirmə. - Elementi dəyişmək və qonşulara baxmaq üçün indekslə gəz;
a[i ± 1]üçün dövrün sərhədlərini daralt. removeqiymətə,popindeksə görə silir;sort,reverse,appendNoneqaytarır.- İzləmədə həmişə siyahının cari vəziyyətinə bax: dəyişmiş element növbəti addımlara təsir edir.
Özünü yoxla
12 sual. Hər düzgün cavab XP qazandırır.
a = [4, 8, 15, 16, 23] siyahısında a[-2] nəyə bərabərdir?