3. List, tuple, set va dict¶
Python'da bir nechta qiymatni bitta o‘zgaruvchi ichida saqlash uchun ma’lumotlar tuzilmalari ishlatiladi.
Eng muhimlari:
list
tuple
set
dict
Ularning har biri turli vazifalar uchun mo‘ljallangan.
List¶
list — bir nechta qiymatni tartibli holda saqlaydigan ma’lumotlar tuzilmasi.
mevalar = [
"olma",
"banan",
"anor"
]
List ichidagi qiymatlarga indeks orqali murojaat qilinadi.
print(
mevalar[0]
)
Natija:
olma
Indekslar 0 dan boshlanadi:
olma → 0
banan → 1
anor → 2
List yaratish¶
ismlar = [
"Softromeda",
"Ali",
"Vali"
]
Bo‘sh list:
ismlar = []
Keyinchalik unga qiymatlar qo‘shish mumkin.
List elementini o‘zgartirish¶
List o‘zgaruvchan ma’lumotlar tuzilmasidir.
mevalar = [
"olma",
"banan",
"anor"
]
mevalar[1] = "uzum"
print(
mevalar
)
Natija:
['olma', 'uzum', 'anor']
Listga element qo‘shish¶
Oxiriga element qo‘shish uchun append() ishlatiladi.
mevalar = [
"olma",
"banan"
]
mevalar.append(
"anor"
)
print(
mevalar
)
Natija:
['olma', 'banan', 'anor']
insert()¶
Muayyan indeksga element qo‘shish uchun insert() ishlatiladi.
mevalar = [
"olma",
"banan",
"anor"
]
mevalar.insert(
1,
"uzum"
)
print(
mevalar
)
Natija:
['olma', 'uzum', 'banan', 'anor']
extend()¶
Bir listdagi bir nechta elementni boshqa listga qo‘shish:
birinchi_list = [
"olma",
"banan"
]
ikkinchi_list = [
"anor",
"uzum"
]
birinchi_list.extend(
ikkinchi_list
)
print(
birinchi_list
)
Natija:
['olma', 'banan', 'anor', 'uzum']
Listdan element o‘chirish¶
Qiymat bo‘yicha o‘chirish uchun remove():
mevalar = [
"olma",
"banan",
"anor"
]
mevalar.remove(
"banan"
)
print(
mevalar
)
Natija:
['olma', 'anor']
pop()¶
pop() indeks bo‘yicha elementni olib tashlaydi va uning qiymatini qaytaradi.
mevalar = [
"olma",
"banan",
"anor"
]
olingan_meva = mevalar.pop(
1
)
print(
f"Olingan meva: {olingan_meva}"
)
print(
mevalar
)
Natija:
Olingan meva: banan
['olma', 'anor']
Agar indeks berilmasa, oxirgi element olinadi:
mevalar = [
"olma",
"banan",
"anor"
]
olingan_meva = mevalar.pop()
print(
f"Olingan meva: {olingan_meva}"
)
Natija:
Olingan meva: anor
del¶
Indeks orqali elementni del yordamida ham o‘chirish mumkin.
mevalar = [
"olma",
"banan",
"anor"
]
del mevalar[1]
print(
mevalar
)
Natija:
['olma', 'anor']
Listni tozalash¶
Barcha elementlarni o‘chirish:
mevalar = [
"olma",
"banan",
"anor"
]
mevalar.clear()
print(
mevalar
)
Natija:
[]
List uzunligi¶
len() listdagi elementlar sonini beradi.
ismlar = [
"Softromeda",
"Ali",
"Vali"
]
soni = len(
ismlar
)
print(
f"Ismlar soni: {soni}"
)
Natija:
Ismlar soni: 3
Listning oxirgi elementi¶
Manfiy indekslardan foydalanish mumkin.
mevalar = [
"olma",
"banan",
"anor"
]
print(
mevalar[-1]
)
Natija:
anor
-1 → oxirgi element
-2 → oxiridan ikkinchi element
Listni kesish¶
Listning bir qismini olish uchun slicing ishlatiladi.
sonlar = [
10,
20,
30,
40,
50
]
natija = sonlar[1:4]
print(
natija
)
Natija:
[20, 30, 40]
Listni boshidan olish¶
sonlar = [
10,
20,
30,
40,
50
]
print(
sonlar[:3]
)
Natija:
[10, 20, 30]
Listni oxiridan olish¶
sonlar = [
10,
20,
30,
40,
50
]
print(
sonlar[2:]
)
Natija:
[30, 40, 50]
Listni nusxalash¶
Quyidagiga ehtiyot bo‘lish kerak:
birinchi_list = [
1,
2,
3
]
ikkinchi_list = birinchi_list
Bu ikki nom bir xil listga murojaat qiladi.
Mustaqil nusxa uchun:
ikkinchi_list = birinchi_list.copy()
Listda qiymat mavjudligini tekshirish¶
in operatori yordamida:
mevalar = [
"olma",
"banan",
"anor"
]
if "olma" in mevalar:
print(
"Olma listda mavjud."
)
Natija:
Olma listda mavjud.
Listda qiymat mavjud emasligini tekshirish¶
mevalar = [
"olma",
"banan",
"anor"
]
if "shaftoli" not in mevalar:
print(
"Shaftoli listda mavjud emas."
)
Listni saralash¶
sort() listni saralaydi.
sonlar = [
50,
10,
30,
20,
40
]
sonlar.sort()
print(
sonlar
)
Natija:
[10, 20, 30, 40, 50]
Teskari saralash¶
sonlar = [
50,
10,
30,
20,
40
]
sonlar.sort(
reverse=True
)
print(
sonlar
)
Natija:
[50, 40, 30, 20, 10]
reverse()¶
Elementlar tartibini teskarisiga aylantirish:
mevalar = [
"olma",
"banan",
"anor"
]
mevalar.reverse()
print(
mevalar
)
Natija:
['anor', 'banan', 'olma']
Tuple¶
tuple ham bir nechta qiymatni tartibli saqlaydi.
Asosiy farqi — tuple o‘zgarmas.
ranglar = (
"qizil",
"yashil",
"ko‘k"
)
Elementni olish:
print(
ranglar[0]
)
Natija:
qizil
Tuple o‘zgarmasligi¶
Quyidagi kod xatolik beradi:
ranglar = (
"qizil",
"yashil",
"ko‘k"
)
ranglar[0] = "sariq"
Chunki tuple yaratilgandan keyin uning elementlarini o‘zgartirib bo‘lmaydi.
Tuple yaratish¶
mevalar = (
"olma",
"banan",
"anor"
)
Bitta elementli tuple yaratishda vergul kerak:
qiymat = (
"Softromeda",
)
Bu tuple.
Quyidagisi esa oddiy str:
qiymat = (
"Softromeda"
)
Tuple uzunligi¶
ranglar = (
"qizil",
"yashil",
"ko‘k"
)
print(
len(ranglar)
)
Natija:
3
Tuple qachon ishlatiladi?¶
Tuple qiymatlar o‘zgarmas bo‘lishi kerak bo‘lganda foydali.
Masalan:
koordinata = (
35.115,
129.041
)
Yoki:
rgb_rang = (
255,
255,
255
)
Set¶
set — takrorlanmaydigan qiymatlar to‘plami.
mevalar = {
"olma",
"banan",
"anor"
}
Set ichida bir xil qiymat bir necha marta yozilsa, takroriy qiymatlar saqlanmaydi.
mevalar = {
"olma",
"olma",
"banan"
}
print(
mevalar
)
Natijada faqat bitta "olma" qoladi.
Setda tartib¶
Set tartibli indekslangan kolleksiya emas.
Shuning uchun:
mevalar[0]
kabi murojaat qilish mumkin emas.
Setda indeks mavjud emas.
Setga element qo‘shish¶
mevalar = {
"olma",
"banan"
}
mevalar.add(
"anor"
)
print(
mevalar
)
Setdan element o‘chirish¶
mevalar = {
"olma",
"banan",
"anor"
}
mevalar.remove(
"banan"
)
print(
mevalar
)
discard() ham ishlatilishi mumkin:
mevalar.discard(
"banan"
)
discard() element mavjud bo‘lmasa ham xatolik bermaydi.
Set uzunligi¶
mevalar = {
"olma",
"banan",
"anor"
}
print(
len(mevalar)
)
Natija:
3
Setlarda birlashtirish¶
Ikki setni birlashtirish:
birinchi_toplam = {
"olma",
"banan"
}
ikkinchi_toplam = {
"anor",
"uzum"
}
natija = birinchi_toplam.union(
ikkinchi_toplam
)
print(
natija
)
Set kesishmasi¶
Ikki setda umumiy bo‘lgan qiymatlarni olish:
birinchi_toplam = {
"olma",
"banan",
"anor"
}
ikkinchi_toplam = {
"banan",
"uzum",
"anor"
}
natija = birinchi_toplam.intersection(
ikkinchi_toplam
)
print(
natija
)
Natija:
{'banan', 'anor'}
Dictionary¶
dict ma’lumotlarni kalit va qiymat ko‘rinishida saqlaydi.
Masalan:
foydalanuvchi = {
"ism": "Softromeda",
"yosh": 25,
"kasb": "Dasturchi"
}
Bu yerda:
ism → Softromeda
yosh → 25
kasb → Dasturchi
Dictionary qiymatini olish¶
foydalanuvchi = {
"ism": "Softromeda",
"yosh": 25
}
print(
foydalanuvchi["ism"]
)
Natija:
Softromeda
get()¶
Kalit mavjud bo‘lmasa xatolik olmaslik uchun get() ishlatilishi mumkin.
foydalanuvchi = {
"ism": "Softromeda"
}
yosh = foydalanuvchi.get(
"yosh"
)
print(
yosh
)
Natija:
None
Standart qiymat berish ham mumkin:
yosh = foydalanuvchi.get(
"yosh",
0
)
print(
yosh
)
Natija:
0
Dictionary qiymatini o‘zgartirish¶
foydalanuvchi = {
"ism": "Softromeda",
"yosh": 25
}
foydalanuvchi["yosh"] = 26
print(
foydalanuvchi
)
Dictionaryga yangi qiymat qo‘shish¶
foydalanuvchi = {
"ism": "Softromeda",
"yosh": 25
}
foydalanuvchi["kasb"] = "Dasturchi"
print(
foydalanuvchi
)
Natija:
{'ism': 'Softromeda', 'yosh': 25, 'kasb': 'Dasturchi'}
Dictionarydan element o‘chirish¶
pop():
foydalanuvchi = {
"ism": "Softromeda",
"yosh": 25,
"kasb": "Dasturchi"
}
kasb = foydalanuvchi.pop(
"kasb"
)
print(
f"O‘chirilgan qiymat: {kasb}"
)
print(
foydalanuvchi
)
Dictionary keys()¶
Faqat kalitlarni olish:
foydalanuvchi = {
"ism": "Softromeda",
"yosh": 25,
"kasb": "Dasturchi"
}
print(
foydalanuvchi.keys()
)
Dictionary values()¶
Faqat qiymatlarni olish:
print(
foydalanuvchi.values()
)
Dictionary items()¶
Kalit va qiymat juftliklarini olish:
print(
foydalanuvchi.items()
)
Dictionaryda kalit mavjudligini tekshirish¶
foydalanuvchi = {
"ism": "Softromeda",
"yosh": 25
}
if "ism" in foydalanuvchi:
print(
"Ism mavjud."
)
Ichma-ich dictionary¶
Dictionary ichida boshqa dictionary bo‘lishi mumkin:
foydalanuvchi = {
"ism": "Softromeda",
"aloqa": {
"shahar": "Busan",
"mamlakat": "Koreya"
}
}
Shaharni olish:
print(
foydalanuvchi["aloqa"]["shahar"]
)
Natija:
Busan
Ichma-ich list¶
List ichida boshqa list bo‘lishi mumkin:
sonlar = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
Element olish:
print(
sonlar[1][2]
)
Natija:
6
List ichida dictionary¶
Amaliy dasturlarda juda ko‘p uchraydigan tuzilma:
foydalanuvchilar = [
{
"ism": "Softromeda",
"yosh": 25
},
{
"ism": "Ali",
"yosh": 30
}
]
Birinchi foydalanuvchining ismini olish:
print(
foydalanuvchilar[0]["ism"]
)
Natija:
Softromeda
Qaysi tuzilmani tanlash kerak?¶
Asosiy farqlar:
list
→ Tartibli
→ O‘zgaruvchan
→ Takroriy qiymatlar mumkin
tuple
→ Tartibli
→ O‘zgarmas
→ Takroriy qiymatlar mumkin
set
→ Takrorlanmaydigan qiymatlar
→ Indeks mavjud emas
dict
→ Kalit-qiymat juftliklari
→ Kalit orqali ma’lumot olish
List, tuple, set va dict taqqoslash¶
list
[1, 2, 3]
tuple
(1, 2, 3)
set
{1, 2, 3}
dict
{"bir": 1, "ikki": 2}
Ularning maqsadi bir xil emas.
Ma’lumotning qanday ishlatilishiga qarab mos tuzilmani tanlash kerak.
Amaliy mashqlar¶
Mashq 1¶
Beshta meva nomidan iborat list yarating.
Listga yangi meva qo‘shing.
So‘ng bittasini o‘chiring.
Mashq 2¶
Beshta sonli list yarating va uni o‘sish tartibida saralang.
Mashq 3¶
Tuple yordamida koordinata yarating:
x
y
Mashq 4¶
Takroriy elementlarga ega list yarating va uni setga aylantiring.
Mashq 5¶
Ikki set yarating va ularning umumiy elementlarini toping.
Mashq 6¶
Quyidagi ma’lumotlardan dictionary yarating:
Ism
Yosh
Kasb
Shahar
Mashq 7¶
Dictionaryga yangi kalit qo‘shing va mavjud qiymatlardan birini o‘zgartiring.
Mashq 8¶
List ichida uchta dictionary saqlang:
Foydalanuvchi
Yoshi
Kasbi
Keyin birinchi foydalanuvchining ismini ekranga chiqaring.
Mini loyiha — Softromeda foydalanuvchilari¶
Bir nechta foydalanuvchini list va dictionary yordamida saqlang:
foydalanuvchilar = [
{
"ism": "Softromeda",
"yosh": 25,
"kasb": "Dasturchi"
},
{
"ism": "Ali",
"yosh": 30,
"kasb": "Muhandis"
},
{
"ism": "Vali",
"yosh": 28,
"kasb": "Dizayner"
}
]
print(
foydalanuvchilar[0]["ism"]
)
print(
foydalanuvchilar[1]["kasb"]
)
Natija:
Softromeda
Muhandis
Bu tuzilma keyinchalik API, ma’lumotlar bazasi va real dasturlarda juda ko‘p uchraydi.
Bob xulosasi¶
Bu bobda Python'dagi asosiy ma’lumotlar tuzilmalari bilan tanishdik:
list
tuple
set
dict
List:
mevalar = [
"olma",
"banan",
"anor"
]
Tuple:
koordinata = (
35.1,
129.0
)
Set:
mevalar = {
"olma",
"banan",
"anor"
}
Dictionary:
foydalanuvchi = {
"ism": "Softromeda",
"yosh": 25
}
Keyingi bobda operatorlar, taqqoslashlar va shartli ifodalar yordamida dastur qaror qabul qilishini o‘rganamiz.