Python logo

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:

  1. my_list = ['olma', 'anor', 'shaftoli']
  2.  
  3. # yoki list so'zi yordamida
  4.  
  5. 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)

  1. # Bu mening xaridlarim ro'yxati
  2.  
  3. shop_list = ['olma', 'anor', 'shaftoli']
  4.  
  5. print("Men", len(shop_list), "ta xarid qilishim kerak")
  6.  
  7.  
  8. print("Xaridlar:", end=' ')
  9.  
  10. for item in shop_list:
  11.  
  12. print(item, end=' ')
  13.  
  14.  
  15. print("\nYana nok ham sotib olish kerak")
  16.  
  17. shop_list.append('nok')
  18.  
  19. print("Endi xaridlar ro'yxatim quyidagicha:", shop_list)
  20.  
  21.  
  22. print("Ro'yxatimni saralayman")
  23.  
  24. shop_list.sort()
  25.  
  26. print("Saralangan xaridlar ro'yxati quyidagicha: ", shop_list)
  27.  
  28.  
  29. print("Birinchi xarid qilishim kerak bo'lgan narsa bu ", shop_list[0])
  30.  
  31. old_item = shop_list[0]
  32.  
  33. del shop_list[0]
  34.  
  35. print("Men xarid qildim ", old_item)
  36.  
  37. 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:

  1. t1 = 'ilon', 'fil', 'pingvin'
  2.  
  3. # yoki
  4.  
  5. t2 = ('ilon', 'fil', 'pingvin')
  6.  
  7. # yoki
  8.  
  9. t3 = tuple(('ilon', 'fil', 'pingvin'))

 

 

Misol: (using_tuple.py nomi bilan saqlang)

  1. zoo = ('ilon', 'fil', 'pingvin') # Qavslar shart emas
  2.  
  3. print("Zooparkdagi hayvonlar soni -", len(zoo))
  4.  
  5.  
  6. new_zoo = 'maymun', 'tuya', zoo
  7.  
  8. print("Zooparkdagi qafaslar soni -", len(new_zoo))
  9.  
  10. print("Yangi zooparkdagi hamma hayvonlar:", new_zoo)
  11.  
  12. print("Eski zooparkdan keltirilgan hayvonlar:", new_zoo[2])
  13.  
  14. print("Eski zooparkdan keltirilgan oxirgi hayvon -", new_zoo[2][2])
  15.  
  16. 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:

  1. d1 = {'key1' : 'value1', 'key2' : 'value2'}
  2.  
  3. # yoki
  4.  
  5. d2 = dict([('key1', 'value1'), ('key2', 'value2')])

 

Misol: (using_dict.py nomi bilan saqlang)

  1. ab = {
  2.  
  3. 'Swaroop' : 'swaroop@swaroopch.com',
  4.  
  5. 'Larry' : 'larry@wall.org',
  6.  
  7. 'Matsumoto' : 'matz@ruby-lang.org',
  8.  
  9. 'Spammer' : 'spammer@hotmail.com',
  10.  
  11. }
  12.  
  13.  
  14. print("Swaroopning manzili:", ab['Swaroop'])
  15.  
  16.  
  17. # kalit qiymat juftligini o'chirish
  18.  
  19. del ab['Spammer']
  20.  
  21.  
  22. print('\nManzillar kitobida {0} kontakt\n'.format(len(ab)))\
  23.  
  24.  
  25. for name, address in ab.items():
  26.  
  27. print('{0} - manzili {1}'.format(name, address))
  28.  
  29.  
  30. # kalit qiymat juftligini qo'shish
  31.  
  32. ab['Guido'] = 'guido@python.org'
  33.  
  34.  
  35. if 'Guido' in ab:
  36.  
  37. 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.

(443 marta o'qilgan, bugun 1 marta o'qildi)

O'xshash maqolalar: