🐍 Python: Tuple
Tushuncha, Packing/Unpacking, Operatsiyalar
Assalomu alaykum, yosh dasturchilar! 😊
📚 Bugungi darsda o'rganamiz:
- 🔹Tuple nima va qanday yaratiladi
- 🔹Packing va Unpacking
- 🔹Tuple operatsiyalari
- 🔹List bilan farqlari
- 🔹Amaliy mashqlar
🤔 Tuple nima?
Tuple - bu o'zgarmas (immutable) ro'yxat. Yaratgandan keyin o'zgartirib bo'lmaydi!
# Tuple yaratish
mevalar = ("olma", "banan", "anor")
print(mevalar)
print(type(mevalar))
# Bo'sh tuple
bo'sh_tuple = ()
print(bo'sh_tuple)
('olma', 'banan', 'anor')
<class 'tuple'>
()
🔒 Tuple
O'zgarmas
() qavslar
Tez ishlaydi
📝 List
O'zgaruvchan
[] qavslar
Ko'p operatsiyalar
🛠️ Tuple yaratish
# Turli xil tuple'lar
sonlar = (1, 2, 3, 4, 5)
har_xil = (1, "salom", 3.14, True)
# Bitta elementli tuple - e'tibor bering!
noto'g'ri = (5) # Bu tuple emas, oddiy son
to'g'ri = (5,) # Bu tuple, vergul kerak!
print(type(noto'g'ri)) # <class 'int'>
print(type(to'g'ri)) # <class 'tuple'>
Bitta elementli tuple yaratishda vergul (,) qo'yishni unutmang!
🏋️ Mashq
Quyidagi tuple'larni yarating:
- 3 ta meva nomi
- 5 ta son
- Bitta elementli tuple
📦 Packing
Packing - bir nechta qiymatni tuple sifatida birlashtirish
# Packing - qiymatlarni tuple'ga yig'ish
ism = "Ali"
yosh = 15
sinf = "10-A"
# Bitta tuple'da jamlash
talaba = (ism, yosh, sinf)
print(talaba)
# Yoki to'g'ridan-to'g'ri
talaba_info = ("Zara", 16, "9-B")
print(talaba_info)
('Ali', 15, '10-A')
('Zara', 16, '9-B')
Packing - ma'lumotlarni bitta joyda saqlash uchun qulay usul!
📤 Unpacking
Unpacking - tuple elementlarini alohida o'zgaruvchilarga ajratish
# Unpacking - tuple'dagi qiymatlarni ajratish
talaba = ("Ahmad", 17, "11-sinf")
# Har bir elementni alohida o'zgaruvchiga
ism, yosh, sinf = talaba
print(f"Ism: {ism}")
print(f"Yosh: {yosh}")
print(f"Sinf: {sinf}")
# Xato - element soni mos kelmasa
# ism, yosh = talaba # ValueError!
Ism: Ahmad
Yosh: 17
Sinf: 11-sinf
Unpacking'da o'zgaruvchilar soni tuple elementlari soniga teng bo'lishi kerak!
🌟 Murakkab Unpacking
# * yordamida qolgan elementlarni olish
sonlar = (1, 2, 3, 4, 5)
# Birinchi va oxirgi, qolganini list'da
birinchi, *o'rtadagilar, oxirgi = sonlar
print(f"Birinchi: {birinchi}")
print(f"O'rtadagilar: {o'rtadagilar}")
print(f"Oxirgi: {oxirgi}")
# Faqat birinchi 2 ta kerak
a, b, *qolgan = sonlar
print(f"a = {a}, b = {b}")
print(f"Qolgan: {qolgan}")
Birinchi: 1
O'rtadagilar: [2, 3, 4]
Oxirgi: 5
a = 1, b = 2
Qolgan: [3, 4, 5]
* belgisi bilan qolgan elementlarni list sifatida olish mumkin!
⚙️ Tuple Operatsiyalari
# Indekslash va kesish
mevalar = ("olma", "banan", "anor", "uzum")
print(mevalar[0]) # olma
print(mevalar[-1]) # uzum
print(mevalar[1:3]) # ('banan', 'anor')
# Birlashtirish
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
birlashtirish = tuple1 + tuple2
print(birlashtirish) # (1, 2, 3, 4, 5, 6)
# Takrorlash
takror = ("salom",) * 3
print(takror) # ('salom', 'salom', 'salom')
olma
uzum
('banan', 'anor')
(1, 2, 3, 4, 5, 6)
('salom', 'salom', 'salom')
🔍 Element Tekshirish
# Element bor-yo'qligini tekshirish
mevalar = ("olma", "banan", "anor")
print("banan" in mevalar) # True
print("nok" in mevalar) # False
print("olma" not in mevalar) # False
# Tuple uzunligi
print(len(mevalar)) # 3
# Element soni
print(mevalar.count("olma")) # 1
# Element indeksi
print(mevalar.index("anor")) # 2
True
False
False
3
1
2
Tuple'da faqat 2 ta metod bor: count() va index()
⚖️ Tuple vs List
🔒 Tuple
- O'zgarmas
- () qavslar
- Tez ishlaydi
- Kam xotira
- Dictionary key bo'lishi mumkin
📝 List
- O'zgaruvchan
- [] qavslar
- Ko'p metodlar
- Ko'p xotira
- Dictionary key bo'la olmaydi
# Tuple'ni o'zgartirib bo'lmaydi
mevalar = ("olma", "banan")
# mevalar[0] = "anor" # TypeError!
# Ammo tuple ichidagi list'ni o'zgartirish mumkin
har_xil = (1, ["olma", "banan"], 3)
har_xil[1][0] = "anor" # Bu ishlaydi!
print(har_xil) # (1, ['anor', 'banan'], 3)
🏋️ Amaliy Mashqlar
Mashq 1: Talaba ma'lumotlari
# Talaba ma'lumotlarini tuple'da saqlang
talaba = ("Oybek", 16, "10-A", 4.8)
# Unpacking qiling
ism, yosh, sinf, baho = talaba
print(f"{ism} {yosh} yoshda, {sinf} sinfda o'qiydi")
print(f"O'rtacha bahosi: {baho}")
Mashq 2: Koordinatalar
# Nuqta koordinatalari
nuqta1 = (3, 4)
nuqta2 = (7, 8)
# Koordinatalarni ajratish
x1, y1 = nuqta1
x2, y2 = nuqta2
# Masofa hisoblash
masofa = ((x2-x1)**2 + (y2-y1)**2)**0.5
print(f"Masofa: {masofa}")
🎯 Xulosa
Bugun o'rganganlarimiz:
- ✅Tuple - o'zgarmas ma'lumotlar to'plami
- ✅Packing - qiymatlarni tuple'ga yig'ish
- ✅Unpacking - tuple elementlarini ajratish
- ✅Tuple operatsiyalari: indekslash, kesish, birlashtirish
- ✅List'dan farqlari va qachon ishlatish
Tuple'larni o'zgarmas ma'lumotlar kerak bo'lganda ishlating: koordinatalar, konfiguratsiyalar, konstantalar
🏠 Uy vazifasi
Kitob ma'lumotlarini tuple'da saqlang va barcha operatsiyalarni sinab ko'ring!
🎉 Rahmat!
Savollaringiz bormi? 😊