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.
Natija:
Ro'yxatni to'g'ridan to'gri chop qilishda natija yuqoridagi kabi bo'ladi. Agar bizda1
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.
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.
Natija:
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.
Natija:
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
Natija:
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:
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:
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.
Natija:
8-misol. Indexlar orasidan kesib olish.
Indexni boshlanishi va tugashini kiritamiz. [start, end-1]
yoki [start, end)
. Bu yerda index boshlanishi olinadi, tugashi olinmaydi.
Natija:
9-misol. Boshidan kesib olish
Bu misolda ham berilgan index o'zi olinmaydi.
Natija:
10-misol.
Bu misolda ham berilgan index dan boshlab oxirigacha olinadi. O'zi ham kiradi.
Natija:
Manfiy indexlar bilan ishlash
Manfiy indexlardan ro'yxatning oxiridan elementlarni olish uchun ishlatish mumkin.
11-misol. Manfiy indexlar
Natija:
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
Natija:
Haqiqatdan ham2
sonlar ro'yxatida mavjud. Endi esa if
shart operatori bilan ishlatishni ko'ramiz.
Natija:
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:
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:
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:
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.
Natija:
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
Natija:
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:
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.
Natija:
Yuqoridagi jarayonni yaxshi tushunish uchun for
bilan yaxshi tanish bo'lishingiz kerak bo'ladi.
For bilan ro'yxat elementlarining index lari bilan ishlash.
Natija:
While operatori bilan ro'yxat
while
bilan ro'yxat ustida ishlashda bizga len()
funksiyasi kerak bo'ladi, bu bilan biz ro'yxat uzunligini olamiz.
Har bir interatsiyadan so'ng i
ni 1
ga oshirish esdan chiqmasin.
Natija:
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:
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:
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.
Natija:
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!
Natija:
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:
Natija:
Nusxalashni boshqa usuli ham bor:
Natija:
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.
Natija:
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 |