Isoqjanov Ilyos | Python
512 subscribers
34 photos
13 videos
2 files
60 links
🐍 Python bo'yicha o'zbek tilidagi sifatli materiallarni ko'paytirishda o'zing madadkor bo'lgin Allohim.

Shaxsiy blogim:
https://t.me/coldboot_blog

Admin:
@JurabekAbdusattarov,
@pythonwithcoldboot
Download Telegram
📘 #Python | enumerate() vs range(len())
mevalar = ["olma", "banan", "gilos"]

# range(len())
for i in range(len(mevalar)):
print(i, mevalar[i])

# enumerate()
for i, meva in enumerate(mevalar):
print(i, meva)


🔹 enumerate() — indeks va qiymatni birgalikda, xavfsiz va xotira tejamkor tarzda beradi.
🔹 range(len()) — faqat indeks yaratadi; agar ro‘yxat o‘zgarsa IndexError yoki noto‘g‘ri natija chiqishi mumkin.
🔹 Har ikkisi ham “lazy iterator”, ya’ni barcha elementlarni birdaniga xotiraga yuklamaydi.
Lekin:
enumerate() → iteratorni joyida o‘rab oladi, elementlarni bitta-bitta oladi.
range(len()) → len() orqali obyekt uzunligini oldindan hisoblab oladi, bu esa katta iteratorlarda muammo.

🧠 Katta ma’lumot oqimi (masalan 10¹⁸ element) misolida:
range(len(iterator)) — len() butun iteratorni sanab chiqadi → xotira to‘ladi yoki ishlamaydi.
enumerate(iterator) — elementlarni lazy tarzda qaytaradi → ishlaydi, xotira sarfi minimal.

enumerate() → toza, tez, xavfsiz, katta oqimlar uchun mos
⚠️ range(len()) → faqat indeks kerak bo‘lgandagina ishlating

Batafsil ma'lumotni komentariya topishingiz mumkin👇
👏71👍1🔥1
💡 #Python | for ... else — kam ishlatiladigan, lekin foydali konstruktsiya

Pythonda for sikliga else qo‘shish mumkin. Bu sikl break orqali to‘xtamasa — ya’ni normal tugasa — bajariladi.
for item in iterable:
if condition(item):
break
else:
handle_not_found()


🧩 Ishlash mexanizmi
• for → iteratorni aylantiradi (iter + next)
• Agar sikl StopIteration orqali tugasa → else bajariladi
• Agar break ishga tushsa → else o‘tilmaydi

⚙️ Amaliy misol
users = ["ali", "vali", "salim"]

for user in users:
if user == "nozim":
print("Topildi!")
break
else:
print("Foydalanuvchi topilmadi.")


🧠 else bloki qidiruv muvaffaqiyatsiz bo‘lganda ishlaydi — flag o‘zgaruvchi yozishning toza alternativasi.

🧠 Qachon ishlatish kerak?
• Qidiruv jarayonlarida (search, lookup)
• Loop tugash holatini aniq belgilashda
• flag yoki found kabi yordamchi o‘zgaruvchilarsiz kod yozishda

⚠️ Eslatma
for ... else kamdan-kam ishlatiladi, chunki ko‘p dasturchilar uni “sikl muvaffaqiyatsiz tugaganda else ishlaydi” deb noto‘g‘ri talqin qiladi.
Ammo to‘g‘ri joyda ishlatilsa — kodni yanada deklarativ va toza qiladi.

Qisqa xulosa:
for-else = “Agar break bo‘lmasa, elseni bajar.”

🔍 Elegant qidiruv mantiqi uchun Pythonic yechim.
32❤‍🔥1🔥1👏1😁1👌1
🚀 #Python: List Comprehension — qisqa, tez va samarali kod yozish usuli

Ko‘p hollarda ro‘yxat (list) yaratish uchun for siklidan foydalanamiz.
Lekin Pythonda buni bitta qatorda yozish mumkin 😎
numbers = [i * 2 for i in range(5) if i > 0]
print(numbers)


🧩 Bu kodda nima bo‘layapti?

1️⃣ for i in range(5) → i qiymatlari: 0, 1, 2, 3, 4
2️⃣ if i > 0 → faqat 1, 2, 3, 4 olinadi
3️⃣ i * 2 → har bir son 2 ga ko‘paytiriladi

Natija: [2, 4, 6, 8]


⚡️ Nega List Comprehension foydali?

1. Kod qisqaradi
# Oddiy usul
nums = []
for i in range(5):
if i > 0:
nums.append(i * 2)

# List comprehension
nums = [i * 2 for i in range(5) if i > 0]


👉 Natija bir xil, lekin kod ancha ixcham va o‘qilishi oson.

2. Ishlash tezligi yuqori
append() chaqiruvlari yo‘q, hammasi Pythonning ichki C darajasidagi optimallashtirilgan loopda bajariladi.

Masalan:
import time

# Oddiy for
start = time.time()
nums = []
for i in range(10_000_000):
nums.append(i * 2)
print("Oddiy for:", time.time() - start)

# List comprehension
start = time.time()
nums = [i * 2 for i in range(10_000_000)]
print("List comprehension:", time.time() - start)


💡 Natija odatda 1.5–2 baravar tezroq bo‘ladi!

3. O‘qish oson va tushunarli
even = [x for x in range(10) if x % 2 == 0]
# Juft sonlar ro‘yxati


4. Filtrlash va o‘zgartirishni oson qiladi
words = ["hello", "python", "world"]
lengths = [len(w) for w in words] # [5, 6, 5]


5. Bir necha sikllarni birlashtirish
Hatto bir nechta for ni bitta list comprehension ichida ishlatish ham mumkin:
pairs = [(x, y) for x in [1, 2] for y in ['a', 'b']]
# [(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b')]


💬 Xulosa:
🔹 List comprehension — Pythonning eng qulay sintaksislaridan biri.
🔹 Kodni ixcham qiladi.
🔹 Ishlashni tezlashtiradi.
🔹 O‘qishni osonlashtiradi.
👍62🔥2
🎯 #Python OOP — Encapsulation (Inkapsulyatsiya) nima?

Inkapsulyatsiya — bu obyektning ichki ma’lumotlarini tashqaridan bevosita o‘zgartirilishidan himoya qilish usuli. Ya’ni, atribut va metodlarni yashirish va ularga faqat nazorat orqali murojaat qilish.

🔐 Pythonda atributlarni yashirish 3 xil darajada amalga oshiriladi:

1️⃣ Public — ochiq atribut

Barchaga ochiq, erkin foydalanish mumkin.
class User:
def __init__(self):
self.name = "Ali" # public


2️⃣ Protected — ichki foydalanish uchun

Atribut nomi _ (bitta pastki chiziq) bilan boshlanadi.
class User:
def __init__(self):
self._balance = 1000 # protected


3️⃣ Private — to‘liq himoyalangan

Atribut nomi (ikki pastki chiziq) bilan boshlanadi.
class User:
def __init(self):
self.__password = "1234" # private


🧠 Private atributga qanday murojaat qilinadi?

Odatda bevosita murojaat qilib bo‘lmaydi, faqat getter/setter orqali:
class User:
def __init__(self):
self.__password = "1234"

def get_password(self):
return self.__password

def set_password(self, new_pass):
if len(new_pass) >= 4:
self.__password = new_pass
else:
print("Parol kamida 4 belgidan iborat bo‘lishi kerak!")


📌 Encapsulation nima beradi?


✔️ Ma’lumotlarni himoya qiladi
✔️ Xatolarni kamaytiradi
✔️ Katta loyihalarda tartib-intizom yaratadi
✔️ Tashqi kodning ichki tuzilmani buzishini oldini oladi


Bu tushunchani yaxshi tushunmaganlar anchagina manimcha, savolaringlar bo'lsa komentariyada qoldirishinglar mumkin? Savollar to'plansa ularning hammasiga bittada javob beraman, yoki komentarida yoki video orqali👇
51👍1🥰1👏1