Skip to content

Pythonda ro'yxatlar(list).

Asosiy tushunchalar

Barcha dastrurlash tillarida ma'lumotlarni to'plam ko'rinishda saqlash uchun ma'lumotlar turlari mavjud, misol uchun Java, C, JS kabi dastrulash tillarida massiv(array) ma'lumotlar turi mavjud. Bu tur o'zida bir qancha ma'lumotlarni bitta o'zgaruvchida saqlash imkonini beradi. Python da bu ma'lumot turi ro'yxat(list) deb nomlanadi. C va C++ dasturlash tillarida massivlar faqat bir xil ma'lumotlar turini saqlaydi. Pythonning ro'yxat turida har xil turdagi ma'lumotlarni saqlash mumkin. Ro'xaytlardan qanday foydalaniladi? Python da ro'yxatlar [ ochish va ] yopish orqali foydalaniladi. Shu belgilar orasida yozilgan ma'lumotlar ro'yxatning elemntlari hisoblanadi. Ro'yxat elementlariga esa uning indexlari orqali murojaat qilinadi. Indexkar 0 tartibi bilan boshlanadi. Endi amaliyotga o'tsak bo'ladi.

1-misol

1 dan 5 gacha bo'lgan sonlarni o'zida saqlagan ro'yxat.

sonlar = [1, 2, 3, 4, 5]
print(sonlar)

Natija:

[1, 2, 3, 4, 5]
Ro'yxatni to'g'ridan to'gri chop qilishda natija yuqoridagi kabi bo'ladi. Agar bizda 1 raqamini chop qilishimiz kerak bo'lsa buni qanday amalga oshiramiz? Undan oldin oldin indexlarga yana qayta to'xtalib o'tsak. Bu misolda indexlar quyidagi tartibda bo'ladi.

1 => 0
2 => 1
3 => 2
4 => 3
5 => 4
Menimcha tushunarli bo'ldi. Bu yerda 1 qiymatli elemntga 0 index, 2 ga esa 1 index biriktirilganini anglash mumkin.

2-misol

Ro'yxat elementiga index orqali murojaat qilish.

sonlar = [1, 2, 3, 4, 5]
print(sonlar[0])

Natija:

1

Biz mavzuni boshlashda indexlar haqida aytib o'tgan edik. Ko'rib turganingizdek ro'yxat elementiga index orqali murojaat qilishda [index] dan foydalanamiz. Agar bizga yuqoridagi misolimizda keyingi index erak bo'lsa [1] dan foydalanamiz. Mavjud bo'lmagan index kiritsak nima bo'ladi? Buni quyida ko'ramiz.

3-misol

Mavjud bo'lmagan index ga murojaat qilish.

sonlar = [1, 2, 3, 4, 5]
print(sonlar[100])

Natija:

IndexError: list index out of range

Agar biz mavjud bo'lmagan index kiritsak indexlar chegarasidan chiqib ketganimiz haqidagi xatolik xabarini olamiz.

Yuqoridagi misollarimizda biz faqat bir xil turdagi qiymatlardan foydalandik keling endi har xil turlar bilan ishlab ko'ramiz. Bizga do'stlarimiz ro'yxatini saqlashimiz kerak bo'ldi, buni quyidagicha amalga oshiramiz.

4-misol

dostlar = ["Hayot", "Alisher", "Suhrob", "Akmal", 2, 3, 4]
print(dostlar)

Natija:

["Hayot", "Alisher", "Suhrob", "Akmal", 2, 3, 4]

Bizda hech qanday xatolik xabari chiqmadi, chunki biz hammasini to'g'ri bajardik. Python bizga shunday imkoniyatlarni taqdim qiladi.

Ro'yxat uzunligini aniqlash.

Shunday holatlar bo'ladi biz saqlagan ro'yxatni uzunligini aniqlashimiz kerak. Buning uchun bizga Pythonning len funksiyasi yordamga keladi.

5-misol

dostlar = ["Hayot", "Alisher", "Suhrob", "Akmal"]
print("Do'stlar:", dostlar)
print("Soni:", len(dostlar))

Natija:

Do'stlar: ['Hayot', 'Alisher', 'Suhrob', 'Akmal']
Soni: 4

Ro'yxat bizga bir xil qiymatlarni takrorlanishiga imkon beradi. Ya'ni bir qiymat bir necha marta qo'shish mumkin, ularni indexlari bilan ajratib olinadi.

6-misol

dostlar = ["Hayot", "Alisher", "Suhrob", "Akmal", "Hayot"]
print("Do'stlar:", dostlar)
print("Soni:", len(dostlar))

Natija:

Do'stlar: ['Hayot', 'Alisher', 'Suhrob', 'Akmal', 'Hayot']
Soni: 5

Ro'yxat elementlari bilan ishlash

Python da biror loyiha ishlab chiqish davomida ro'yxatlarga juda ko'p murojaat qilinadi, ba'zida uzunligi ba'zida oxirgi ba'zida esa o'rtadagi qiymatini olish kabi vazifalar qo'yiladi. Bu vazifalar ko'p takrorlangani uchun Python dasturchilari bu vazifalar uchun tayyor funksiyalar yozib qo'shib qo'yishgan. Quyida shular bilan tanishib chiqamiz.

7-misol. Ro'yxatning oxirgi elementini olish.

sonlar = [1, 2, 3, 4, 5]
print(sonlar[-1])

Natija:

5

8-misol. Indexlar orasidan kesib olish.

Indexni boshlanishi va tugashini kiritamiz. [start, end-1] yoki [start, end). Bu yerda index boshlanishi olinadi, tugashi olinmaydi.

sonlar = [1, 2, 3, 4, 5]
print(sonlar[1:3])

Natija:

[2, 3]

9-misol. Boshidan kesib olish

Bu misolda ham berilgan index o'zi olinmaydi.

sonlar = [1, 2, 3, 4, 5]
print(sonlar[:3])

Natija:

[1, 2, 3]

10-misol.

Bu misolda ham berilgan index dan boshlab oxirigacha olinadi. O'zi ham kiradi.

sonlar = [1, 2, 3, 4, 5]
print(sonlar[2:])

Natija:

[3, 4, 5]

Manfiy indexlar bilan ishlash

Manfiy indexlardan ro'yxatning oxiridan elementlarni olish uchun ishlatish mumkin.

11-misol. Manfiy indexlar

sonlar = [1, 2, 3, 4, 5]
print(sonlar[-4:-2])

Natija:

[2, 3]
Natijaga qarab tahlil qiling va tushinishga harakat qiling. Umid qilamanki shu bilan siz tushinib olasiz.

Ro'yxatdan elemnt mavjduligini tekshirish.

Agar siz ro'yxatda biror elemnt bor yoki yo'qligini aniqlamoqchi bo'lsangiz in dan foydalanishingiz mumkin.

12-misol. in dan foydalanish

sonlar = [1, 2, 3, 4, 5]
print(2 in sonlar)

Natija:

True
Haqiqatdan ham 2 sonlar ro'yxatida mavjud. Endi esa if shart operatori bilan ishlatishni ko'ramiz.

sonlar = [1, 2, 3, 4, 5]
if 2 in sonlar:
    print("Mavjud")
else:
    print("Mavjud emas")

Natija:

Mavjud

Ro'yxat elementlarini o'zgartirish

Ro'yxatlardan foydalanishda ularni elemntlarini o'zgartirishga ham to'g'ri keladi. O'zgartirish uchun albatta indexlardan foydalanamiz. Chunki qaysi index da joylashgan elemntni o'zgartirish keragligini aniqlab berishimiz kerak. Va shuni ham yodda tutish kerak ro'yxatlardan foydalanishda va ustida mallar bajarishda birinchi navbatda uning indexiga murojaat qilinadi.

13-misol. Ro'yxat elementini o'zgartirish.

ismlar = ["Farrux", "Sardor", "Elbek", "Aziz", "Aziz"]
print(ismlar)
# bizda ikkita Aziz ismi bor shuni boshqa ismga o'zgartiramiz. Ya'ni 3-indexda turgan ismni.
ismlar[3] = "Farhod"
print(ismlar)

Natija:

['Farrux', 'Sardor', 'Elbek', 'Aziz', 'Aziz']
['Farrux', 'Sardor', 'Elbek', 'Farhod', 'Aziz']

14-misol. Ro'yxat elementini diapazon bo'yicha o'zgartirish.

ismlar = ["Farrux", "Sardor", "Elbek", "Aziz", "Aziz"]
print(ismlar)
ismlar[2:4] = ["Farhod", "Sherzod"]
print(ismlar)

Natija:

['Farrux', 'Sardor', 'Elbek', 'Aziz', 'Aziz']
['Farrux', 'Sardor', 'Farhod', 'Sherzod', 'Aziz']

Info

Kiritilgan elementlar soni almshtirladigan elementlar soniga mos kelmasa, ro'yxat uzunligi o'zgaradi.

15-misol. Ro'yxat elementini diapazon bo'yicha o'zgartirishda uzunlik mos kelmasa

ismlar = ["Farrux", "Sardor", "Elbek", "Aziz"]
print(ismlar)
ismlar[2:4] = ["Farhod", "Sherzod"]
print(ismlar)

Natija:

['Farrux', 'Sardor', 'Elbek', 'Aziz']
['Farrux', 'Sardor', 'Farhod', 'Sherzod']

16-misol. Ro'yxatning ayni bir indexiga element qo'shish.

Bu usulda yangi element boshqasini o'rniga emas, boshqa yangi indexga yoki mavjud indexge keyingisini bittaga surish orqali qo'shiladi.

ismlar = ["Farrux", "Sardor", "Elbek", "Aziz"]
ismlar.insert(2, "Sherzod")
print(ismlar)

Natija:

['Farrux', 'Sardor', 'Sherzod', 'Elbek', 'Aziz']

Ro'yxatga yangi element qo'shish va o'chirish

Yuqorida ro'yxatga yangi element qo'shishni insert bilan ko'rdik, bu usul yaxshi lekin uni ishlatish uchun o'z o'rni bor har doim ham unday foydalanish to'g'ri bo'laydi. Shuning uchun ro'yxatga yangi element qo'shishni boshqa usulini ham ko'ramiz.

Pythonda ro'yxat uchun append degan maxsus metodi bor. Bu metod ro'yxat oxiriga yangi element qo'shish uchun hizmat qiladi.

17-misol. appendga misol

ismlar = ["Farrux", "Sardor", "Elbek", "Aziz"]
ismlar.append("Sherzod")
print(ismlar)

Natija:

['Farrux', 'Sardor'', 'Elbek', 'Aziz', 'Sherzod']

Ikkita ro'yxatni qo'shish.

Ro'yxatlarni qo'shish uchun ro'xatlar bilan ishlashni extend deb nomalngan metdi mavjud. Bu metod bir ro'yxatni boshqasini oxiriga qo'shadi.

18-misol. extendga misol

ismlar1 = ["Farrux", "Sardor", "Elbek", "Aziz"]
ismlar2 = ["Sherzod", "Shehroz"]
ismlar1.extend(ismlar2)
print(ismlar1)

Natija:

['Farrux', 'Sardor', 'Elbek', 'Aziz', 'Sherzod', 'Shehroz']

Info

extend boshqa turlarni ham qo'shishi mumkin. hozircha biz faqat ro'yxatlar bilan ishlaganimiz uchun faqat ro'yxatlar misolida ko'rdik.

Ro'yxat va takrorlanish operatorlari.

Ro'yxatlar bilan ishlashda for sikl operatori bilan har bir elementini chop qilishimiz yoki boshqa mantiqiy amallarni bajarishimiz mumkin. Buni misollar bilan korganimiz yaxshiroq bo'lsa kerak.

mevalar = ['olma', 'anor', 'gilos']
for i in mevalar:
    print(i)

Natija:

olma
anor
gilos

Yuqoridagi jarayonni yaxshi tushunish uchun for bilan yaxshi tanish bo'lishingiz kerak bo'ladi.

For bilan ro'yxat elementlarining index lari bilan ishlash.

mevalar = ['olma', 'anor', 'gilos']
for i in range(len(mevalar)):
    print(mevalar[i])

Natija:

olma
anor
gilos

While operatori bilan ro'yxat

while bilan ro'yxat ustida ishlashda bizga len() funksiyasi kerak bo'ladi, bu bilan biz ro'yxat uzunligini olamiz.

mevalar = ['olma', 'anor', 'gilos']
i = 0
while i < len(mevalar):
    print(mevalar[i])
    i = i + 1

Har bir interatsiyadan so'ng i ni 1 ga oshirish esdan chiqmasin.

Natija:

olma
anor
gilos

List Comprehension

List Comprehension(tarjima qilinmadi) bu ro'yxat bilan ishlashda qisqa ko'rinishini taklif qiladi. Qachonki siz mavjud ro'yxat asosida yangisini hosil qilmoqchi bo'lsangiz bu siz uchun to'g'ri tanlov hisoblanadi. Quiyida misol ko'ramiz.

Bizga mevalar ro'yxati berilgan, shu ro'yxatdan foydalanib o harfi qatnashgan mevalarni alohida qilish vazifasi qo'yildi. Buni for bilan amalga oshirib ko'ramiz.

yangi = []
mevalar = ['olma', 'anor', 'behi', 'gilos', 'o`rik']
for meva in mevalar:
    if 'o' in meva:
        yangi.append(meva)
print(yangi)

Natija:

['olma', 'anor', 'gilos', 'o`rik']

Endi yuqoridagi misolni List Comprehension bilan qayta yozib ko'ramiz.

mevalar = ['olma', 'anor', 'behi', 'gilos', 'o`rik']
yangi = [meva for meva in mevalar if 'o' in meva]
print(yangi)

Natija:

['olma', 'anor', 'gilos', 'o`rik']

Ko'rib turganingizdek natija bir xil, ikkinchi usulni foydali tomoni qisqa bu bizga kodimizni chiroyli bo'lishini ta'minlab beradi.

Ro'yxatlarni saralash

Ro'yxatlar bilashda yana ko'p duch kelishimiz mumkin bo'lgan holatlardan biri bu uni saralash hisoblanadi. Bu imkoniyatni avvaldan Python bizga tayyor holatda taqdim qilgan. Biz shundan qanday foydalanishni ko'rib chiqamiz.

Yana biz usha mevalardan foydalanamiz. Bizga shu ro'yxatni alifbo bo'yicha saralash vazifasi qo'yildi. Buni ro'yxatlarning tayyor funksiyasisort dan foydalanamiz.

mevalar = ['olma', 'anor', 'behi', 'gilos', 'o`rik']
mevalar.sort()
print(mevalar)

Natija:

['anor', 'behi', 'gilos', 'o`rik', 'olma']

Biz misolda matnli qiymatlar bilan ko'rdik, siz buni sonlar bilan sinab ko'ring.

Endi bizga buni teskari tartibda saralash vazifasi qo'yilda buni qanday amalga oshiramiz? Bu juda oson!

mevalar = ['olma', 'anor', 'behi', 'gilos', 'o`rik']
mevalar.sort(reverse=True)
print(mevalar)

Natija:

['olma', 'o`rik', 'gilos', 'behi', 'anor']
Funksiyalar bilan tanishganimizdan so'ng boshqa o'zimiz saralash funksiylari yozib ishlatishni ko'ramiz. Hozirch ashular bizga yetarli.

Ro'yxatnda nusxa olish

Ro'yxatlar bilan ishlashda copy() funksiyasiga duch kelishingiz mumkin, bu funksiya ro'yxatni boshqa ro'yxatga nusxalash uchun ishlatiladi.

Misol:

mevalar = ['olma', 'anor', 'behi', 'gilos', 'o`rik']
yangi = mevalar.copy()
print(yangi)

Natija:

['olma', 'anor', 'behi', 'gilos', 'o`rik']

Nusxalashni boshqa usuli ham bor:

mevalar = ['olma', 'anor', 'behi', 'gilos', 'o`rik']
yangi = list(mevalar)
print(yangi)

Natija:

['olma', 'anor', 'behi', 'gilos', 'o`rik']

Yana boshqa usuli: Bu usulga yaqin bo'lgan misollarni yuqorida ko'rib o'tgan edik, ya'ni ro'yxat elementlarini kesib olish. Unda faqat boshi yoki oxirini ko'rsatishimiz kerak edi. Agar shunchaki ikki nuqat(:) ishlatsak to'liq kesib olishni anglatar ekan.

mevalar = ['olma', 'anor', 'behi', 'gilos', 'o`rik']
yangi = mevalar[:]
print(yangi)

Natija:

['olma', 'anor', 'behi', 'gilos', 'o`rik']

Ro'yxat bilan ishlash uchun funksiyalar

Yuqoridagi misollarimizda biz len, sort kabi tayyor funksiyalarni ishlatib ko'rdik. Endi ro'yxatlar bilan ishlash uchun tayyor bo'lgan boshqa funksiyalarni ko'rib chiqamiz.

Ro'yxatlar bilan ishlash uchun maxsus funksiyalar jadvali:

Method Tavsif
append() Elementni ro‘yxatning oxiriga qo‘shadi
clear() Ro‘yxatdagi barcha elementlarni o‘chiradi
copy() Ro‘yxatning nusxasini qaytaradi
count() Ko‘rsatilgan qiymatdagi elementlar sonini qaytaradi
extend() Ro‘yxatning oxiriga boshqa ro‘yxat (yoki har qanday iterable) elementlarini qo‘shadi
index() Ko‘rsatilgan qiymatdagi birinchi elementning indeksini qaytaradi
insert() Elementni ko‘rsatilgan pozitsiyaga qo‘shadi
pop() Ko‘rsatilgan pozitsiyadagi elementni olib tashlaydi
remove() Ko‘rsatilgan qiymatdagi elementni o‘chiradi
reverse() Ro‘yxatdagi elementlar tartibini teskari qiladi
sort() Ro‘yxatni tartiblaydi

Misollar:

append()

my_list = [1, 2, 3]
my_list.append(4)
print(my_list)  # Natija: [1, 2, 3, 4]

clear()

my_list = [1, 2, 3]
my_list.clear()
print(my_list)  # Natija: []

copy()

my_list = [1, 2, 3]
new_list = my_list.copy()
print(new_list)  # Natija: [1, 2, 3]

count()

my_list = [1, 2, 3, 2]
print(my_list.count(2))  # Natija: 2

extend()

my_list = [1, 2, 3]
my_list.extend([4, 5])
print(my_list)  # Natija: [1, 2, 3, 4, 5]

index()

my_list = [1, 2, 3]
print(my_list.index(2))  # Natija: 1

insert()

my_list = [1, 3]
my_list.insert(1, 2)
print(my_list)  # Natija: [1, 2, 3]

pop()

my_list = [1, 2, 3]
my_list.pop(1)
print(my_list)  # Natija: [1, 3]

remove()

my_list = [1, 2, 3]
my_list.remove(2)
print(my_list)  # Natija: [1, 3]

reverse()

my_list = [1, 2, 3]
my_list.reverse()
print(my_list)  # Natija: [3, 2, 1]

sort()

my_list = [3, 1, 2]
my_list.sort()
print(my_list)  # Natija: [1, 2, 3]