AXV

Ma’lumotlar tuzilmalari va string

Ma’lumotni qanday saqlash kerak va matn Python ichida qanday yashaydi

9-sinfAdvanced Back-end va DevOps4-hafta · 10-dars

Bugun nimalarni o‘rganamiz?

Ma’lumotlar tuzilmasi

Nima u va nega to‘g‘ri tanlash muhim

String

Belgilar ketma-ketligi va yaratishning 3 usuli

Immutable

Stringni o‘zgartirib bo‘lmaydi - yangisini yaratamiz

01

Ma’lumotlar tuzilmasi

Ma’lumotni xotirada qanday saqlash va joylashtirish

Ta’rif (rasmiy qo‘llanma)

Ma’lumotlar tuzilmasi (Data Structure) - kompyuter xotirasida ma’lumotlarni qanday ko‘rinishda saqlash, qanday tartibda joylashtirish va ular ustida qanday tez va qulay amallar bajarish usuli.

O‘xshatish: omborxonadagi javonlar. Poyabzal uchun bir javon, kitob uchun boshqa - to‘g‘ri javon tanlansa, narsa tez topiladi.

Bizda 10 000 ta ma’lumot bor. Nima kerak?

10 000 ma’lumot Qidirish Qo‘shish/o‘chirish Takrorni yo‘qotish Kalit bo‘yicha topish

Agar noto‘g‘ri tuzilma tanlansa...

Kod murakkablashadi

Oddiy ish uchun o‘nlab qator

Dastur sekinlashadi

Qidiruv uzoq davom etadi

Xato ko‘payadi

Chalkash kodda bug yashirinadi

Pythonning 5 ta asosiy tuzilmasi

string"Ali"4-hafta list[1, 2, 3]4-hafta tuple(1, 2)5-hafta set{1, 2}5-hafta dict{"name": "Ali"}5-hafta

Mini-test

Noto‘g‘ri ma’lumotlar tuzilmasi tanlansa nima bo‘lmaydi?

Noto‘g‘ri tuzilma faqat zarar beradi: murakkab kod, sekinlik va xatolar.
02

String nima?

Belgilar ketma-ketligi

String - belgilar ketma-ketligi (1.49-rasm)

s = "Ali 9!" A l i bo‘sh 9 ! type(s) -> <class 'str'> len(s) -> 6

String ichida nimalar bo‘ladi?

Harf

bosing

A, b

Raqam

bosing

"1", "9" - matn sifatida

Belgi

bosing

!, @, #

Bo‘sh joy

bosing

" " - u ham belgi

String yaratish (1.50-rasm)


s1 = "Hello"
s2 = 'Hello'
        

Qo‘shtirnoq yoki bir tirnoq - ikkalasi ham bir xil.

Ko‘p qatorli string (1.51-rasm)


s1 = "Hello"
s2 = 'Hello'
s3 = """Bu
ko'p qatorli
matn"""

print(s3)
        
Boshiga va oxiriga 3 tadan qo‘shtirnoq: """..."""

Apostrof va tirnoq


a = "O'zbekiston"                 # ichida ' bor -> tashqi "
b = 'U dedi: "Salom!"'            # ichida " bor -> tashqi '
          

Xato bo‘lsa nima bo‘ladi? Pastga

Odatiy xato


a = 'O'zbekiston'
          
SyntaxError: unterminated string literal
Python ikkinchi ' da stringni yopilgan deb o‘ylaydi.
03

String o‘zgarmas

Immutable: o‘zgartirish o‘rniga yangi string

Stringni o‘zgartirib ko‘ramiz (1.52-rasm)


s = "Python"
s[0] = "J"
        
TypeError: 'str' object does not support item assignment

s[0] - 0-indeksdagi belgi (P). Python sanoqni 0 dan boshlaydi.

Yechim: yangi string yaratamiz (1.53-rasm)

s = "Python" s[1:] -> "ython" "J" + "Jython" s o‘zgarmadi: "Python". s2 - butunlay yangi string.

Kodda isbot


s = "Python"
s2 = "J" + s[1:]
print(s)    # Python (o'zgarmadi)
print(s2)   # Jython
        

Immutable: 3 qadamda

1. String muhrlangan

Ichidagi belgini almashtirib bo‘lmaydi.

2. Kerakli qismni olamiz

s[1:] - asl stringdan nusxa bo‘lak.

3. Yangi string yasaymiz

"J" + s[1:] - + doim yangi string yaratadi.

Bashorat qiling

s = "Salom"; t = "K" + s[1:]; print(s, t) nima chiqaradi?

s o‘zgarmaydi; t - yangi string.

String bilan nima qila olamiz?

To‘g‘ridan-to‘g‘ri o‘zgartirish

s[0] = "J" -> TypeError

Yangi string yaratish

"J" + s[1:], s + "!" - asl string joyida qoladi.

0
yaratish usuli
0
asosiy tuzilma

Amaliy topshiriq 20 daqiqa

OsonIsmingizni "...", shahringizni '...' bilan yarating va chiqaring.
O'rta"""...""" bilan 3 qatorli maqol; s = "Python", "J" + s[1:] natijasini bashorat qiling.
Qiyin"Salom" dan "Kalom" va "Salom!" yasang, asl so‘z o‘zgarmaganini isbotlang.

Xulosa

Bugun o‘rgandik

Ma’lumotlar tuzilmasi va 5 turi. String: "...", '...', """...""". Immutable: yangi string yaratamiz.

Uyga vazifa

string_asos.py: 3 usul, Jython/Cython, tuzilmalarni moslashtirish.

Keyingi dars: indeks, slicing va string metodlari.