Python-da ma'lumotlar turlari - Rivojlanish xususiyatlari
Pythonda ma'lumotlar turlari qanday
Ma'lumotlar turi - bu qiymatlar bo'yicha bajarilishi mumkin bo'lgan katta miqdordagi qiymatlar va operatsiyalar to'plami.Python dasturlash tilida bularga raqamlar, satrlar, ro'yxatlar, lug'atlar, kortejlar, to'plamlar va mantiqiy tillar kiradi. Python-da ma'lumotlar turlarini quyidagilarga bo'lish mumkin:
- o'zgaruvchan (to'plamlar, ro'yxatlar, lug'atlar);
- o'zgarmas (kortejlar, satrlar, raqamlar);
- tartiblangan (ro'yxatlar, satrlar, kortejlar, lug'atlar);
- tartibsiz (to'plamlar).
Python boshqa tillardan yozilishida farq qiladi - u yashirin, kuchli va dinamik. Bu qanday ma'nono bildiradi? Yashirin terish, o'zgaruvchini e'lon qilishda, masalan, C++ tilida bo'lgani kabi, tegishli ma'lumotlar turini aniqlashning hojati yo'qligini anglatadi.
Masalan: int a = 10
Pythonda o'zgaruvchini e'lon qilish jarayoni juda oddiy:
Masalan, a = 10
Dinamik terish dasturni ishlab chiqishda xatolar aniqlanishini anglatadi. Statik yozishga ega bo'lgan dasturlash tillarida nuqsonlarni qidirish kompilyatsiya vaqtida sodir bo'ladi. Masalan, Python-da siz bir turdagi ma'lumotlar ob'ektini bir o'zgaruvchiga, keyin esa boshqasiga biriktirishingiz mumkin:
Masalan, a = “Xush kelibsiz” a = 1
Kuchli (aka qattiq) yozish Python-da ma'lumotlar turlarini aralashtirib bo'lmasligingizni anglatadi. Agar o'zgaruvchi raqam sifatida aniqlangan bo'lsa, uni satrga qo'shish ishlamaydi:
Masalan, a = 10 chop etish ('O'n = ' + a)
Bu kodni yanada mustahkam qiladi, chunki siz raqamni satrga aniq aylantirishingiz kerak:
Masalan, a = 10 chop etish ('O'n = ' + str(a))
Ma'lumotlar modeli
Muayyan ma'lumotlar turlariga kirishdan oldin ma'lumotlar modeli nimani anglatishini, ob'ektlarning xotirada qanday shakllanishi va belgilash jarayoni (=) qanday ishlashi haqida bir oz gapiraylik. Python-da o'zgaruvchini e'lon qilish uchun siz uning nomini ko'rsatishingiz, tayinlash belgisini (=) qo'yishingiz va o'zgaruvchida saqlanadigan qiymatni kiritishingiz kerak.
Masalan, a = 10
"a" nomli o'zgaruvchi 10 raqamini oldi. 10 butun qiymati Pythondagi hamma narsa (raqamlar, satrlar, ro'yxatlar va boshqalar) kabi ob'ektdir. Ob'ekt ma'lumotlarning abstraktsiyasidir. Ma'lumotlar nafaqat ob'ektlarga, balki ular o'rtasidagi munosabatlarga ham tegishli. Ob'ekt uchta komponentdan iborat: tur, identifikator va qiymat. O'zgaruvchi tarjimon darajasida yaratilganda, butun son ob'ekti 10 hosil bo'ladi va xotiraning biror joyida saqlanadi. Bu obyekt identifikatori, qiymati 10 va butun son turiga ega. Tayinlash operatori (=) a o'zgaruvchisi va ob'ekt 10, butun son turi o'rtasida havola hosil qiladi.
Oʻzgaruvchi nomi Python kalit soʻzlaridan farqli boʻlishi kerak. Tekshirish uchun kalit so'z modulidan iskeyword() usulidan foydalanishingiz mumkin.
Masalan, import kalit so'z keyword.iskeyword(«for») # => Rost
Python da topshiriq operatsiyasini yaxshiroq tushunish uchun yana bir misol keltiramiz: Masalan, a = 5 b = 10
chop etish (id(a)) # => 140732499849616
chop etish (id(b)) # => 140732499849776
a = b
chop etish (id(a)) # => 140732499849776
Bu erda id funksiyasi o'zgaruvchi bilan bog'langan identifikatorni aniqlash uchun ishlatiladi. Muayyan qadriyatlarga tayanmasligingiz kerak, chunki sizniki bir xil bo'lmaydi. Shuni ham yodda tutingki, topshiriqdan keyin o'zgaruvchiga tegishli identifikator o'zgargan.
O'zgaruvchining turini bilish uchun type() opsiyasidan foydalanishingiz mumkin: Masalan, a = 5 print(type(a)) # => <sinf 'int'>
Shunday qilib, biz Python dasturlash tilida ma'lumotlar turlarini tushunishga o'tishimiz mumkin.
Raqamlar
Raqamlar guruhiga butun sonlar, suzuvchi nuqtali sonlar va kompleks sonlar kiradi. Pythonda ular int, float va kompleks sifatida belgilanadi. O'zgaruvchi yoki qiymat sinfini bilish uchun type() parametridan va ob'ekt qaysi sinfga tegishli ekanligini tekshirish uchun isinstance() funksiyasidan foydalanishingiz mumkin:
>>> a = 5 >>> chop etish (a, "turi", (a) turi) 5 <sinf 'int'> turiga kiradi >>> a = 2,0 >>> chop etish (a, "turi", (a) turi) 2.0 turi < 'float'> sinfiga tegishli >>> a = 1+2j
>>> chop etish (a, "kompleks sonmi?", misol(1+2j, kompleks)) (1+2j) kompleks sonmi? To'g'ri
Butun sonlar har qanday uzunlikka ega bo'lishi mumkin va yagona cheklov mavjud xotiradir. Suzuvchi nuqta raqamlari cheklangan aniqlikka ega. Konsolda butun son va suzuvchi nuqtani tashqi ko‘rinishiga ko‘ra (aniqrog‘i nuqta orqali) farqlashingiz mumkin: 1 - butun son, 1,0 - suzuvchi nuqta.
Kompleks sonlar uchun yozuv formati mavjud: x + yj, bu erda x sonning haqiqiy qismi, y esa xayoliy qismdir. Quyida ba'zi misollar keltirilgan:
>>> a = 1234567890123456789 >>> a 1234567890123456789 >>> b = 0,1234567890123456789 >>> b 0,12345678901234568 >>> c = 1+2j >>> c (1+2j)
Ko'rib turganingizdek, b o'zgaruvchining qiymati qisqartirildi.
Ro'yxatlar
Ro'yxat - elementlarning tashkil etilgan ketma-ketligi. Ro'yxat komponentlari har xil turdagi bo'lishi mumkin.
Ro'yxatni e'lon qilish unchalik qiyin emas. Buni amalga oshirish uchun kvadrat qavslardan foydalaning, ularning ichida ro'yxat elementlarini vergul bilan ajratishingiz kerak:
>>> a = [1, 2.2, 'python']
Roʻyxatdagi elementni (bu jarayon “indeksga kirish” deb ataladi) yoki bir qator elementlardan (bu “tilim” deb ataladi) ajratib olish uchun [] operatoridan foydalanish mumkin.
>>> a = [5,10,15,20,25,30,35,40] >>> chop etish(«a[2] =», a[2]) a[2] = 15 >>> chop («a[0:3] =», a[0:3]) a[0:3] = [5, 10, 15] >>> chop («a[5:] =», a[5:]) a[5:] = [30, 35, 40]
Ro'yxatlar Pythonda o'zgaruvchan ma'lumotlar turidir. Bu uning tarkibiy qismlarining qiymatlarini o'zgartirish mumkinligini anglatadi:
>>> a = [1,2,3] >>> a[2] = 4 >>> a [1, 2, 4]
Kortejlar
Kortejlar xuddi ro'yxatlar kabi, lekin ular Pythonda o'zgarmas ma'lumotlar turidir. Siz ular bilan ro'yxatlar bilan bir xil tarzda ishlashingiz mumkin, ammo kortejni o'zgartiradigan manipulyatsiyalarni bajara olmaysiz:
some_tuple = ('p', 'y', 't', 'h', 'o', 'n') Kortejning #ekstremal elementi last_element = some_tuple[-1] chop etish (oxirgi_element) #birinchi elementdan uchinchi elementgacha boʻlgan kortej tilim tuple_slice = some_tuple[0:3] chop etish (tuple_slice) #birinchi komponentning qiymatini o'zgartiring some_tuple[0] = 'c'
"p" elementini "c" ga o'zgartirishga urinayotganda, Python xatoga yo'l qo'yadi: TypeError: "tuple" ob'ekti elementni belgilashni qo'llab-quvvatlamaydi
Ko'proq usullar va operatsiyalarga ega ro'yxatlar mavjud bo'lganda, nima uchun kortejlardan foydalanasiz deb hayron bo'lishingiz mumkin. Yuqorida aytib o'tilganidek, ishlab chiquvchilar funksiya ob'ekt qiymatini o'zgartirmasligiga ishonch hosil qilishlari kerak bo'lgan holatlar mavjud. Kortejlar aynan shu uchun mo'ljallangan.
Lug'atlar
Lug'at (dict) kalit-qiymat juftlarining tartibsiz to'plamidir. Kalitlar har qanday doimiy ob'ektlar bo'lishi mumkin: raqamlar, satrlar va hatto kortejlar.
Elementlardan foydalanish, ularni o'chirish va yangilarini yaratish juda oson: GeekBrains talaba ma'lumotlari bilan #lug'at some_dict = {'first_name':'Aleksey', 'age':35, 'is_paid':To'g'ri, 'kurslar':['python', 'javascript', 'html/css'], } chop etish (ba'zi_dict) "familiya_ismi" kalitli #element chop etish(some_dict['first_name']) # ‘Aleksey’ #mavjud bo'lmagan kalitga qiymat belgilash orqali element yarating some_dict['ikkinchi_ism'] = ‘Petrov’ chop etish (ba'zi_dict)
#{'birinchi_ism': 'Aleksey', 'yosh': 35, 'to'lanadi': To'g'ri, 'kurslar': ['python', 'javascript', 'html/css'], 'ikkinchi_ism': 'Petrov'} del some_dict['to'lanadi'] chop etish (ba'zi_dict)
#{'birinchi_ism': 'Aleksey', 'yosh': 35, 'kurslar': ['python', 'javascript', 'html/css'], 'ikkinchi_ism': 'Petrov'}
Lug'atdagi qiymatlar har xil turdagi ob'ektlar bo'lishi mumkin (shu jumladan, boshqa lug'atlar). Uya qo'yish chegarasi yo'q. Lug'atlar ketma-ketlik emas, balki xaritalash bo'lgani uchun undagi elementlar tartiblanmagan. Bu shuni anglatadiki, elementlar for tsiklida chop etilganda, ularning tartibi lug'at ishga tushirilganda ko'rsatilgan tartibdan farq qilishi mumkin.
Chiziqlar
String - bu Python dasturlashdagi boshqa ma'lumotlar turi bo'lib, u belgilar ketma-ketligini ifodalaydi. Satr yaratish uchun bitta yoki ikkita tirnoqdan foydalaning. Ko'p qatorli qo'shtirnoqlarni ko'rsatish uchun siz »' yoki «»» uchta tirnoq belgilaridan foydalanishingiz mumkin:
>>> s = “Oddiy qator” >>> s = »'Ko'p qatorli qator"'
[] operatori qatorlarga ham, roʻyxatlar va kortejlarga ham qoʻllanilishi mumkin. E'tibor bering, Python-dagi satrlar o'zgarmas ketma-ketliklardir. Bu shuni anglatadiki, barcha funktsiyalar va usullar faqat yangi satr hosil qilishi mumkin.
Setlar
To'plamlar tartiblanmagan noyob ketma-ketlikka tegishli. To'plamni e'lon qilishda jingalak qavslar ichida vergul bilan ajratilgan elementlardan foydalaning:
>>> a = {5,2,3,1,4} #to'siq o'zgaruvchining chiqishi >>> chop etish (“a =”, a) a = {1, 2, 3, 4, 5} #oʻzgaruvchining maʼlumotlar turi a >>> chop etish (turi (a)) <sinf 'to'plami'>
To'plamlar birlashma va kesishish kabi jarayonlarga bo'ysunishi mumkin. O'rnatilgan elementlarning majburiy o'ziga xosligi tufayli dublikatlar avtomatik ravishda o'chiriladi:
>>> a = {1,2,2,3,3,3} >>> a {1, 2, 3}
To‘plam tartibsiz ketma-ketlik bo‘lgani uchun, chiqarish operatoridan foydalanish mumkin emas:
>>> a = {1,2,3} >>> a[1] Traceback (eng oxirgi qo'ng'iroq): Fayl "<stdin>", 1-qator, <modul> da TypeError: 'set' ob'ekti indekslashni qo'llab-quvvatlamaydi
Python ma'lumotlar turlari haqida eslash kerak bo'lgan muhim narsalar
- Python-dagi har bir ob'ekt o'ziga xos ma'lumotlar turiga ega (int, string, list va boshqalar) va ular tegishli sinflarning konstruktorlari tomonidan ishlab chiqariladi.
- Python-dagi o'zgaruvchilar kompyuter ma'lumotlarini saqlash sohalari uchun nomlardir. Koddagi har bir o'zgaruvchining o'z ma'lumotlar turi mavjud bo'lib, bu o'zgaruvchida qanday qiymatlar bo'lishi mumkinligini va unga qancha xotira kerakligini aytadi.
- O'zgarmas ob'ektlar - holati va mazmunini o'zgartirib bo'lmaydigan ob'ektlar. Agar siz bunday ob'ektning qiymatini o'zgartirishga harakat qilsangiz, kerakli qiymatga ega va bir xil nomdagi yangi ob'ekt yaratiladi. O'zgarmas ob'ektlarga raqam, satr, kortej kiradi.
- O'zgaruvchan ob'ektlar - bu yaratilganidan keyin qiymatlari o'zgartirilishi mumkin bo'lgan ob'ektlar. Bularga roʻyxat, lugʻat yoki toʻplamlar kiradi.
- Python-da ishlatiladigan raqamli ma'lumotlar turlari butun son, suzuvchi nuqta va murakkab raqamlardir.
- Mantiqiy ma'lumotlar turi faqat ikkita qiymatga ega: True va False.
- Satr ma'lumotlar turi matn ma'lumotlarini yoki baytlar ketma-ketligini saqlaydi.
- Python-dagi ro'yxatlar har xil turdagi ma'lumotlarga ega bo'lishi mumkin bo'lgan tartiblangan elementlar tizimidir.
- Python-dagi kortejlar ro'yxatlar bilan bir xil, ammo bitta farq bilan - ularni o'zgartirib bo'lmaydi.
- Lug'atlar kalit-qiymat juftlarining tartibsiz ro'yxatidir.
- To'plam o'zgarmas turga mansub noyob va tartibsiz elementlar majmuasidir.
Python dasturlash tili ob'ektga yo'naltirilgan, ya'ni u ob'ektlar va sinflarga asoslangan. Ob'ekt - bu kompyuterda ma'lumotni saqlash maydoni bo'lib, u turi (aks holda sinf deb ataladi) va qiymat bilan tavsiflanadi. Shu bilan birga, tur ob'ektning qiymatlar sohasiga, unda ishlatilishi mumkin bo'lgan jarayonlar va usullarga ta'sir qiladi. Python juda ko'p o'rnatilgan ma'lumotlar turlariga ega. Bu dasturchiga oddiy masalalarni yechishda o'z darslarini kamroq yozish imkonini beradi.
Foydalanilgan manba:gb.ru