Python dasturlash tili: 8.1-dars.
Ma’lumotlar tuzilmalari
Pythonda 4 ta ma’lumotlar tuzilmalari mavjud: ro’yxat (list), kortej (tuple), lug’at (dict) va to’plam (set).
8.1 Ro’yxat (spisok)
Ro’yxat – bu tartiblangan elementlar to’plami. Tushunish oson bo’lishi uchun xarid qilinishi kerak bo’lgan maxsulotlar ro’yxatini tasavvur qilish mumkin.
Python tushunishi uchun elementlar ro’yxati to’rtburchak qavsga olingan bo’lishi kerak. Tuzilgan ro’yxatdan qidirish, unga qo’shish va undan olib tashlash mumkin. Ro’yxat bu o’zgaruvchan ma’lumot turi hisoblanadi.
Ro’yxat quyidagicha xosil qilinishi mumkin:
my_list = ['olma', 'anor', 'shaftoli'] # yoki list so'zi yordamida my_list = list(['olma', 'anor', 'shaftoli'])
Ro’yxat ob’yekt va klasslarning ishlatilishiga misol bo’la oladi. Python list klasi uchun append metodini taqdim etadi. Bu metod yordamida ro’yxat oxiriga element qo’shish mumkin. Misol uchun: my_list.append(‘nok’). O’byekt metodiga murojaat qilish uchun nuqta ishlatilishiga e’tibor bering.
Misol: (using_list.py nomi bilan saqlang)
# Bu mening xaridlarim ro'yxati shop_list = ['olma', 'anor', 'shaftoli'] print("Men", len(shop_list), "ta xarid qilishim kerak") print("Xaridlar:", end=' ') for item in shop_list: print(item, end=' ') print("nYana nok ham sotib olish kerak") shop_list.append('nok') print("Endi xaridlar ro'yxatim quyidagicha:", shop_list) print("Ro'yxatimni saralayman") shop_list.sort() print("Saralangan xaridlar ro'yxati quyidagicha: ", shop_list) print("Birinchi xarid qilishim kerak bo'lgan narsa bu ", shop_list[0]) old_item = shop_list[0] del shop_list[0] print("Men xarid qildim ", old_item) print("Endi xaridlarim ro'yxati: ", shop_list)
Natija:
$ python3 using_list.py
Men 3 ta xarid qilishim kerak
Xaridlar: olma anor shaftoli
Yana nok ham sotib olish kerak
Endi xaridlar ro’yxatim quyidagicha: [‘olma’, ‘anor’, ‘shaftoli’, ‘nok’]
Ro’yxatimni saralayman
Saralangan xaridlar ro’yxati quyidagicha: [‘anor’, ‘nok’, ‘olma’, ‘shaftoli’]
Birinchi xarid qilishim kerak bo’lgan narsa bu anor
Men xarid qildim anor
Endi xaridlarim ro’yxati: [‘nok’, ‘olma’, ‘shaftoli’]
Bu qanday ishlaydi:
shop_list o’zgaruvchisi bizning holatda xarid qilinishi kerak bo’lgan narsalar nomlaridan tashkil topgan, lekin ro’yxatga ixtiyoriy ob’yekt, son va xatto boshqa ro’yxatni ham qo’shish mumkin.
for .. in sikli yordamida ro’yxatni iteratsiya qilish mumkin.
print funksiyasidagi end kalit argumenti qatorni oddiy probel bilan tugatish kerakligini bildiradi.
append ro’yxat ob’yekti metodi yordamida ro’yxatga element qo’shamiz. So’ngra haqiqatda qo’shilganligini tekshirish uchun uni ekranga chop qilamiz.
Keyin biz
sort metodi yordamida ro’yxatni saralaymiz.
So’ngra birinchi element xarid qilinganidan keyin uni ro’yxatdan
del operatori yordamida o’chirib tashlaymiz.
8.2 Kortej
Kortejlar bir nechta ob’yektlarni birgalikda saqlashga xizmat qiladi. Ularni ro’yxatlarga o’xshatish mumkin. Lekin ular ro’yxatlar kabi boy funksionallikka ega emas. Ularning asosiy jihati qatorlarga o’xshab o’zgarmasliklaridir.
Kortej elementlar orasini vergul bilan ajratish bilan xosil qilinadi va yana imkon qadar qavslarga olgan ham yahshi.
Misol uchun:
t1 = 'ilon', 'fil', 'pingvin' # yoki t2 = ('ilon', 'fil', 'pingvin') # yoki t3 = tuple(('ilon', 'fil', 'pingvin'))
Misol: (using_tuple.py nomi bilan saqlang)
zoo = ('ilon', 'fil', 'pingvin') # Qavslar shart emas print("Zooparkdagi hayvonlar soni -", len(zoo)) new_zoo = 'maymun', 'tuya', zoo print("Zooparkdagi qafaslar soni -", len(new_zoo)) print("Yangi zooparkdagi hamma hayvonlar:", new_zoo) print("Eski zooparkdan keltirilgan hayvonlar:", new_zoo[2]) print("Eski zooparkdan keltirilgan oxirgi hayvon -", new_zoo[2][2]) print("Yangi zooparkdagi hayvonlar soni -", len(new_zoo)-1+len(new_zoo[2]))
Natija:
$ python3 using_tuple.py
Zooparkdagi hayvonlar soni – 3
Zooparkdagi qafaslar soni – 3
Yangi zooparkdagi hamma hayvonlar: (‘maymun’, ‘tuya’, (‘ilon’, ‘fil’, ‘pingvin’))
Eski zooparkdan keltirilgan hayvonlar: (‘ilon’, ‘fil’, ‘pingvin’)
Eski zooparkdan keltirilgan oxirgi hayvon – pingvin
Yangi zooparkdagi hayvonlar soni – 5
Bu qanday ishlaydi:
zoo o’zgaruvchisi elementlar kortejini ifodalaydi. len funksiyasi kortej uzunligini olish imkonini beradi.
Eski zooparkdagi hayvonlarni yangi zooparkka ko’chiramiz.
new_zoo korteji o’zida oldindan mavjud hayvonlar va eski zoopark hayvonlaridan tashkil topgan. E’tibor bergan bo’lsangiz kortej kortej ichida o’zining mustaqilligini yo’qotmaydi.
Kortej elementlariga murojaat qilish, xuddi ro’yxatlar kabi, to’rtburchak qavslar ichida shu element pozitsiyasini ko’rsatish bilan amalga oshiriladi.
new_zoo kortejining uchinchi elementiga new_zoo[2], kortejning uchinchi elementining uchinchi elementiga new_zoo[2][2]ifoda bilan murojat qilish mumkin.
0 yoki 1 elementlik kortej
Bo’sh kortej bir juft bo’sh qavslar yordamida xosil qilinadi:
my_empty = (). Lekin bitta elementdan tashkil topgan kortej xosil qilish oddiy emas. Uni xosil qilish uchun kortej birinchi elementidan keyin vergul qo’yish kerak bo’ladi. Buning sababi python kortejni qavslarga olingan ifodadan ajratishi uchundir.
Misol uchun:
singleton = (2, )
8.3 Lug’at
Lug’at xuddi manzillar kitobiga o’xshaydi, ya’ni biror insonning ismini bilgan holda uning manzili yoki u bilan bo’g’lanish ma’lumotlarini olish mumkin.
Lug’at quyidagicha xosil qilinishi mumkin.
Misol uchun:
d1 = {'key1' : 'value1', 'key2' : 'value2'} # yoki d2 = dict([('key1', 'value1'), ('key2', 'value2')])
Misol: (using_dict.py nomi bilan saqlang)
ab = { 'Swaroop' : 'swaroop@swaroopch.com', 'Larry' : 'larry@wall.org', 'Matsumoto' : 'matz@ruby-lang.org', 'Spammer' : 'spammer@hotmail.com', } print("Swaroopning manzili:", ab['Swaroop']) # kalit qiymat juftligini o'chirish del ab['Spammer'] print('nManzillar kitobida {0} kontaktn'.format(len(ab))) for name, address in ab.items(): print('{0} - manzili {1}'.format(name, address)) # kalit qiymat juftligini qo'shish ab['Guido'] = 'guido@python.org' if 'Guido' in ab: print("nGuidoning manzili:", ab['Guido'])
Natija:
python3 using_dict.py
Swaroopning manzili: swaroop@swaroopch.com
Manzillar kitobida 3 kontakt
Larry – manzili larry@wall.org
Swaroop – manzili swaroop@swaroopch.com
Matsumoto – manzili matz@ruby-lang.org
Guidoning manzili:
guido@python.org
Bu qanday ishlaydi:
ab slovarini yuqorida ko’rsatilgan usul bilan ifodalab oldik. Keyin biz, xuddi oldin ro’yxat va kortejlarda bo’lgani kabi, uning ixtiyoriy kalit-qiymat juftligiga kalitni indeksda ko’rsatish bilan murojaat qilamiz. Ko’rib turganingizdek oddiy.
Kalit-qiymat juftligini o’chirib tashlash uchun
del operatoridan foydalandik.
Keyin biz slovarning hamma kalit-qiymat juftliklariga
items metodi yordamida murojaat qildik. Bu metod kalit va qiymat juftligidan tashkil topgan kortejlar ro’yxatini qaytaradi. Biz bu juftliklarni for..in siklida name va address o’zgaruvchilarga o’zlashtiramiz va for bloki ichida ekranga chop etamiz.
Yangi kalit-qiymat juftligi indeksda kalitni ko’rsatish va unga qiymatni ko’rsatish bilan qo’shiladi. Biz buni Guido misolida ko’rsatdik.
Kalit-qiymat juftligi borligini
in operatiri yordamida tekshirish mumkin.
Manba:
Umumiy Dasturlash
Python dasturlash tili: 8.1-dars.