#08 RO'YXATLAR BILAN ISHLASH
Ro'yxatlarning ustida turli amallar bajarishni o'rganamiz
Last updated
Ro'yxatlarning ustida turli amallar bajarishni o'rganamiz
Last updated
Aksar holatlarda ro'yxat ichidagi elementlarni alifbo ketma-ketligida tartiblash talab qilinishi mumkin. Buning uchun list uchun maxsus .sort()
metodidan foydalanamiz.
Natija: ['audi', 'bmw', 'general motors', 'mercedes benz', 'tesla', 'volvo']
Kurib turibsiz, yuqoridagi ro'yxatimiz alifbo bo'yicha tartiblandi.
Diqqat! Tartiblashda katta harflar kichik harflardan avval kelishini hisobga oling. Agar matndagi so'zlarning bosh harfi katta-kichik aralash yozilgan bo'lsa, ularni bir ko'rinishga keltirib olish maqsadga muvofiq bo'ladi.
Natija: ['Bmw', 'audi', 'gm', 'mercedes benz', 'tesla', 'volvo']
Yuqoridagi misolda 'Bmw' elementi katta harf bilan boshlangani uchun ro'yxatning boshidan joy oldi.
Ro'yxatni teskari tartibda saqlash uchun .sort()
metodi ichida reverse=True
argumentini ham kiritamiz.
Natija: ['volvo', 'tesla', 'mercedes benz', 'general motors', 'bmw', 'audi']
.sort()
metodi ro'yxatni tartiblaydi. Ba'zida asl ro'yxat ichidagi elementlarning ketma-ketligini buzmagan holda ro'yxatni tartiblash talab qilinishi mumkin. Buning uchun sorted()
funktsiyasidan foydalanamiz:
Natija:
sorted() qaytargan ro'yxat: ['Avazbek', 'Farruh', 'Hamid', 'Odil', 'Shamsiddin', 'Temur']
Asl ro'yxat o'zgarmas qoldi: ['Odil', 'Hamid', 'Temur', 'Avazbek', 'Farruh', 'Shamsiddin']
sorted()
funktsiyasi yordamida teskari tartiblash uchun ham reverse=True
argumentini beramiz:
Natija: ['Temur', 'Shamsiddin', 'Odil', 'Hamid', 'Farruh', 'Avazbek']
Yuoqridagi ikki usul bilan sonli ro'yxatlarni ham tartiblashimiz mumkin:
Natija:
[11, 12, 34, 34, 65, 76, 98]
[98, 76, 65, 34, 34, 12, 11]
Ba'zida ro'yxatni aylantirish (boshini oxiriga, oxirini boshiga) talab qilinishi mumkin. Buning uchun .reverse()
metodidan foydalanamiz.
Natija: ['lemon', 'watermelon', 'apple', 'banana', 'pear']
Natija va asl ro'yxatni solishtiring.
Ro'yxatning uzunligi, ya'ni uning ichidagi elementlar sonini aniqlash uchun len()
funktsiyasidan foydalanamiz:
Natija: Elementlar soni: 5
range()
FUNKTSIYASIBu funktsiya yordamida biz ma'lum oraliqdagi sonlar ketma-ketligini yaratishimiz mumkin. list()
funktsiyasi yordamida esa bu oraliqni ro'yxat shaklida saqlab olamiz:
Natija: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Yuqoridagi misolda range(0,10)
funktsiyasi 0
dan 9
gacha sonlar ketma-ketligini shakllantirdi, list(range(0,9))
esa bu ketma-ketlikni ro'yxatga aylantirdi.
Diqqat! E'tibor qiling range()
funktsiyasi ikkinchi indeksdan bitta avval to'xtaydi.
range()
yordamida qadamni ham berishimiz mumkin:
Natija:
Juft sonlar: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
Toq sonlar: [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
Agar sonlar ketma-ketligi 0 dan boshlansa, range()
funktsiyasida yakuniy indeksni ko'rsatish kifoya. Misol uchun range(0,10)
emas range(10)
deb yozsak ham bo'laveradi.
Pythonda ro'yxatlar ustida ba'zi sodda amallarni ham bajarish mumkin. Misol uchun ro'yxatdagi eng kichik sonni topish uchun min()
funktsiyasidan, eng katta sonni topish uchun esa max()
funktsiyasidan, sonlarning yig'indisini topish uchun esa sum()
funktsyasidan foydalansak bo'ladi:
Natija: Eng arzon narh 5600 . Eng qimmati 32874 . Jami: 116164
Ba'zida ro'yxatning ma'lum bir bo'lagini ajratib olish talab qilinishi mumkin, deylik biz quyidagi cars degan ro'yxatdan birinchi 3 ta elementni ajratib olmoqchimiz, buning uchun biz boshlang'ich va oxirgi indekslarni beramiz:
Natija: ['bmw', 'mercedes benz', 'volvo']
Diqqat! Python 2-indeksdan bitta avval to'xtaydi. Yuqoridagi misolda ham 0,1,2-elementlar ajratib olindi.
Bu usul bilan ro'yxatning istalgan joyidan bo'lishimiz mumkin:
Natija: ['volvo', 'general motors', 'tesla']
Agar boshlang'ich indeksni bermasangiz, Python avtomat ravishda 0
indeksdan boshlab kesadi. Agar 2-indeksni kiritmasangiz, ro'yxat oxirigacha kesadi:
Natija:
['bmw', 'mercedes benz', 'volvo', 'general motors']
['volvo', 'general motors', 'tesla', 'audi']
Dastur davomida biror ro'yxatdan nusxa olish talab qilinishi mumkin. Buning uchun biz tenglik(=
) belgisidan foydalansak bo'ladimi? Quyidagi misolga e'tibor bering:
Natija:
Bu sonlar ro'yxati: [1, 2, 3, 4, 5, 6, 7]
Bu sonlar2 ro'yxati: [1, 2, 3, 4, 5, 6, 7]
Natija biz kutgandek chiqdimi? Yo'q. Biz 6 va 7 sonlarini sonlar2
degan ro'yxatga qo'shgan edik, lekin bu ikki son sonlar
degan asl ro'yxatga ham qo'shilib qoldi.
Demak yuqorida biz sonlar2=sonlar
deb yozgan komandamiz yangi ro'yxat yaratish o'rniga, ikkala o'zgaruvchini ham bitta ro'yxatga bog'lab (yo'naltirib) qo'ydi. Biz sonlar
yoki sonlar2
ustida bajargan amallarimiz aslida bitta ro'yxat ustida bajarilyapti.
Unda, qanday qilib ro'yxatdan nusxa olamiz? Buning uchun yuoqirdagi ka'bi ro'yxatni kesish usulidan foydalanamiz. Faqatgina, kvadrat qavs ichida ikkala indeksni ham ko'rsatmasdan, bo'sh qoldiramiz:
Natija:
Bu sonlar ro'yxati: [1, 2, 3, 4, 5]
Bu sonlar2 ro'yxati: [1, 2, 3, 4, 5, 6, 7]
Dastur yaratish davomida o'zgarmas ro'yxat tuzish talab qilinishi mumkin. Pythonda bunday ro'yxatlar tuples deb yuritiladi. Tuple ichidagi qiymatlarni bir marta, dastur boshida beriladi va so'ngra o'zgartirib bo'lmaydi. List dan farqli ravishda, Tuple e'lon qilishda kvadrat qavslar []
o'rniga oddiy qavslar ()
ishlatiladi:
Natija: (20, 30, 55.2)
Tuple ichidagi elementlarga huddi ro'yxat elementlariga murojat qilingani kabi murojat qilinaveradi:
Natija:
bus
lizard
('bear', 'dino', 'snake')
Keling Tuple ichidagi biror elementning qiymatini o'zgartirib ko'ramiz:
Natija: TypeError: 'tuple' object does not support item assignment
Demak yuqorida ko'rib turganingiz kabi, bu operatsiya xatolikka olib keldi. Shu kabi ro'yxatdan biror elementni o'chirish yoki yangi element qo'shish ham mumkin emas.
Agar Tuple ga o'zgartirish talab qilinsa, yagona yo'li o'zgarmas ro'yxatni list()
funktsiyasi yordamida List (oddiy ro'yxat) ko'rinishiga keltirib olish, o'zgarishlarni bajarsih va qaytarib tuple()
funktsiyasi yordamida o'zgarmas ro'yxatga o'tkazish mumkin:
Natija: ('car', 'mcqueen', 'dino', 'snake', 'lizard', 'dragon')
O'zingizga ma'lum davlatlarning ro'yxatini tuzing va ro'yxatni konsolga chiqaring
Ro'yxatning uzunligini konsolga chiqaring
sorted()
funktsiyasi yordamida ro'yxatni tartiblangan holda konsolga chiqaring
sorted()
yordamida ro'yxatni teskari tartibda konsolga chiqaring
Asl ro'yxatni qaytadan konsolga chiqaring
reverse()
metodi yordamida ro'yxatni ortidan boshlab chiqaring
sort()
metodi yordamida ro'yxatni avval alifbo bo'yicha, keyin esa alifboga teskari tartibda konsolga chiqaring.
120
dan 1200
gacha bo'lgan juft sonlar ro'yxatini tuzing
Ro'yxatdagi sonlar yig'indisini hisoblang va konsolga chiqaring
Ro'yxatdagi eng katta va eng kichik son o'rtasidagi ayirmani hisoblang va konsolga chiqaring
Ro'yxatdagi elementlar sonini hisoblang
Ro'yxatning boshidan, o'rtasidan va oxiridan 20 ta qiymatni konsolga chiqaring
taomlar
degan ro'yxat yarating va ichiga istalgan 5ta taomni kiriting
nonushta
degan yangi ro'yxatga taomlar
dan nusxa oling
Yangi ro'yxatda faqat nonushtaga yeyiladigan taomlarni qoldiring, va qo'shimcha 2 ta taom qo'shing
Ikkala ro'yxatni ham (taomlar
va nonushta
) konsolga chiqaring
Yuqoridagi nonushta ro'yxatini o'zgarmas ro'yxatga aylantiring va nonushta[0] = "qaymoq va non"
deb qiymat berib ko'ring.