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.