📦 #Python | gzip moduli — fayllarni siqish va arxivdan chiqarish
🔹 Asosiy imkoniyatlari:
- Fayllarni
-
- Oddiy baytlar massivini siqish/decompress qilish
📘 Misollar:
✅ 1. Faylni siqish (compress)
✅ 2. Siqilgan .gz faylni ochish (decompress)
✅ 3. Matnni bevosita siqish va ochish
⚠️ Eslatma: Bu modul faqat
https://t.me/simplypythonuz
gzip moduli — bu .gz formatdagi fayllar bilan ishlashni soddalashtiruvchi kuchli vosita. U orqali matnli fayllarni siqish (compress) yoki arxivdan chiqarish (decompress) mumkin.🔹 Asosiy imkoniyatlari:
- Fayllarni
.gz formatda siqish-
.gz fayllarni o‘qish va arxivdan chiqarish- Oddiy baytlar massivini siqish/decompress qilish
📘 Misollar:
✅ 1. Faylni siqish (compress)
import gzip
with open('data.txt', 'rb') as f_in:
with gzip.open('data.txt.gz', 'wb') as f_out:
f_out.writelines(f_in)
✅ 2. Siqilgan .gz faylni ochish (decompress)
import gzip
with gzip.open('data.txt.gz', 'rb') as f:
content = f.read()
print(content.decode('utf-8'))
✅ 3. Matnni bevosita siqish va ochish
import gzip
original = b"Salom, dunyo!"
compressed = gzip.compress(original)
decompressed = gzip.decompress(compressed)
print(decompressed.decode()) # ➝ Salom, dunyo!
⚠️ Eslatma: Bu modul faqat
.gz formatni qo‘llab-quvvatlaydi. compress, pack kabi bash buyruqlari yaratgan fayllar mos kelmaydi.https://t.me/simplypythonuz
🖼 #Python | Pillow — Python’da rasm bilan ishlash kutubxonasi
🔹 Rasmni boshqa formatga o‘tkazish
🔹 Filtrlar qo‘llash
🔹 Rasmni aylantirish
🔹 Thumbnail (miniatura) yaratish
🔹 Bir nechta rasmni paketli tarzda qayta ishlash
✅ Pillow kutubxonasini o‘rnatish:
📚 Batafsil hujjat:
🧪 Misol: Rasmdan foydalanish va uni ko‘rsatish
https://t.me/simplypythonuz
Pillow — bu mashhur Python Imaging Library (PIL) kutubxonasining davomidir. U rasm fayllari bilan ishlashni soddalashtiradi va quyidagi ishlar uchun juda qulay:🔹 Rasmni boshqa formatga o‘tkazish
🔹 Filtrlar qo‘llash
🔹 Rasmni aylantirish
🔹 Thumbnail (miniatura) yaratish
🔹 Bir nechta rasmni paketli tarzda qayta ishlash
✅ Pillow kutubxonasini o‘rnatish:
pip install Pillow
📚 Batafsil hujjat:
pypi.org/project/Pillow🧪 Misol: Rasmdan foydalanish va uni ko‘rsatish
from PIL import Image
# Rasmni ochish
img = Image.open("rasm.jpg")
# O‘lchamini ko‘rsatish
print(img.size)
# Rasmni ko‘rsatish
img.show()
Pillow — ko‘p sonli rasmlar bilan avtomatik ishlash kerak bo‘lganda (masalan, watermark qo‘yish, format o‘zgartirish) juda mos keladi. 👌https://t.me/simplypythonuz
Quyida
💧 Rasmga watermark qo‘yish (Pillow bilan)
📝 E'tibor bering:
-
-
-
Bu usul yordamida logotip, matn, yoki mualliflik huquqi belgilarini rasm ustiga oson qo‘yishingiz mumkin.
https://t.me/simplypythonuz
Pillow kutubxonasi yordamida rasmga watermark (suv belgisi) qo‘yish bo‘yicha oddiy misol:💧 Rasmga watermark qo‘yish (Pillow bilan)
from PIL import Image, ImageDraw, ImageFont
# Rasmni RGBA formatda ochish
image = Image.open("rasm.jpg").convert("RGBA")
# Watermark uchun bo'sh qatlam
txt_layer = Image.new("RGBA", image.size, (255, 255, 255, 0))
# Chizuvchi obyekt
draw = ImageDraw.Draw(txt_layer)
# Shrift (yo‘lni o‘zingiznikiga moslang)
font = ImageFont.truetype("arial.ttf", 40)
# Watermark matni va joylashuvi
text = "© PythonWithTheBest"
position = (20, image.size[1] - 60)
# Watermark rangi (masalan: qizil va 100% shaffoflik)
# Rang formati: (R, G, B, A) — A: opacity (0–255)
color = (255, 0, 0, 255) # Qizil
# Matnni chizamiz
draw.text(position, text, font=font, fill=color)
# Asosiy rasm va watermarkni birlashtiramiz
watermarked = Image.alpha_composite(image, txt_layer)
# Saqlaymiz
watermarked.convert("RGB").save("rasm_watermarked.jpg", "JPEG")
📝 E'tibor bering:
-
arial.ttf o‘rniga tizimingizdagi mavjud shriftni yozing (/usr/share/fonts, C:\Windows\Fonts, yoki .ttf fayl yo‘li).-
fill=(255, 255, 255, 128) bu oq rangli, 50% shaffof watermark.-
alpha_composite — qatlamlarni shaffoflik bilan birlashtiradi.Bu usul yordamida logotip, matn, yoki mualliflik huquqi belgilarini rasm ustiga oson qo‘yishingiz mumkin.
https://t.me/simplypythonuz
👍1
✅ #Python | Internetdan rasmni yuklab olish
Agar sizda rasmning URL manzili bo‘lsa, uni kompyuteringizga yuklab olish uchun quyidagi oddiy Python dasturidan foydalanishingiz mumkin:
🧠 Eslatma:
-
- Fayl
- Fayl nomini istalgancha o‘zgartirishingiz mumkin:
https://t.me/simplypythonuz
Agar sizda rasmning URL manzili bo‘lsa, uni kompyuteringizga yuklab olish uchun quyidagi oddiy Python dasturidan foydalanishingiz mumkin:
import requests
# Rasm URL manzili
url = "https://example.com/image.jpg"
# HTTP so'rov yuborish
response = requests.get(url)
# Agar so'rov muvaffaqiyatli bo'lsa, faylni yozamiz
if response.status_code == 200:
with open("rasm.jpg", "wb") as file:
file.write(response.content)
print("✅ Rasm muvaffaqiyatli saqlandi.")
else:
print("❌ Rasmni yuklab bo‘lmadi.")
🧠 Eslatma:
-
requests moduli Python’da vebdan ma’lumot olish uchun ishlatiladi.- Fayl
.jpg, .png, .webp formatlarda bo‘lishi mumkin — .content orqali rasm binar ko‘rinishda olinadi.- Fayl nomini istalgancha o‘zgartirishingiz mumkin:
rasm.jpg → avatar.png va hokazo.https://t.me/simplypythonuz
✅ #Python | if shartlarini soddalashtiring
Ko‘p qiymatlarni tekshirish kerak bo‘lganda,
❌ Noto‘g‘ri (keraksiz uzun):
✅ To‘g‘ri (soddaroq va aniq):
🧠 Foydali maslahat:
Bunday soddalashtirishlar kodni toza, ixcham va tushunarli qilishga yordam beradi 💡
https://t.me/simplypythonuz
Ko‘p qiymatlarni tekshirish kerak bo‘lganda,
if operatorlarini quyidagi kabi soddalashtirish mumkin:❌ Noto‘g‘ri (keraksiz uzun):
if x == 1 or x == 2 or x == 3:
print("Topildi")
✅ To‘g‘ri (soddaroq va aniq):
if x in (1, 2, 3):
print("Topildi")
🧠 Foydali maslahat:
x in (1, 2, 3) — bu x ning 1, 2 yoki 3 ga teng ekanini tekshiradi. Kodni o‘qish osonlashadi va yozish tezlashadi.Bunday soddalashtirishlar kodni toza, ixcham va tushunarli qilishga yordam beradi 💡
https://t.me/simplypythonuz
⚡2
🧼 #Python | Ichki ro‘yxatlardan (nested lists) dublikatlarni o‘chirish
Ba'zida sizda shunday ro‘yxat bo‘ladi:
Va siz dublikatlarni olib tashlamoqchisiz. Ammo set dan to‘g‘ridan-to‘g‘ri foydalana olmaysiz, chunki list o‘zgaruvchan (
✅ Oddiy va samarali yechim:
🎯 Xulosa:
- Har bir ichki ro‘yxatni
-
- Natijani qayta
📌 Natija: tejamkor, tez va sikllarsiz kod
https://t.me/simplypythonuz
Ba'zida sizda shunday ro‘yxat bo‘ladi:
lists = [[1, 2], [3, 4], [1, 2]]
Va siz dublikatlarni olib tashlamoqchisiz. Ammo set dan to‘g‘ridan-to‘g‘ri foydalana olmaysiz, chunki list o‘zgaruvchan (
unhashable) tur.✅ Oddiy va samarali yechim:
lists = [[1, 2], [3, 4], [1, 2]]
# Dublikatlarni olib tashlaymiz
unique_lists = [list(t) for t in set(tuple(lst) for lst in lists)]
print(unique_lists)
# ➝ [[1, 2], [3, 4]]
🎯 Xulosa:
- Har bir ichki ro‘yxatni
tuple ga aylantiring — ular set ichida ishlaydi-
set bilan dublikatlarni yo‘q qiling- Natijani qayta
list ga aylantiring📌 Natija: tejamkor, tez va sikllarsiz kod
https://t.me/simplypythonuz
🔍 #Python |
Pythonda
✅ Hashable — bu o‘zgarmas (immutable) obyektlar, masalan:
❌ Unhashable — bu o‘zgaruvchan (mutable) obyektlar, masalan:
💡 Nega bu muhim?
Agar siz
🧠 Xulosa:
-
-
https://t.me/simplypythonuz
unhashable nima degani?Pythonda
set, dict kabi xotirada tartiblanadigan ma’lumotlar tuzilmalari (hash table) faqat hashable obyektlar bilan ishlay oladi.✅ Hashable — bu o‘zgarmas (immutable) obyektlar, masalan:
int, float, str, tuple (agar ichida hamma narsa hashable bo‘lsa)
x = (1, 2)
set([x]) # Ishlaydi ✅
❌ Unhashable — bu o‘zgaruvchan (mutable) obyektlar, masalan:
list, dict, set — bu obyektlar set yoki dict kaliti sifatida ishlatilmaydi.
x = [1, 2]
set([x]) # ❌ TypeError: unhashable type: 'list'
💡 Nega bu muhim?
Agar siz
list larni set ichiga solmoqchi bo‘lsangiz, avval ularni tuple ga o‘giring:
lists = [[1, 2], [3, 4], [1, 2]]
# list → tuple → set → list
unique = [list(t) for t in set(tuple(x) for x in lists)]
print(unique)
🧠 Xulosa:
-
hashable → o‘zgarmas, set va dict uchun ishlaydi.-
unhashable → o‘zgaruvchan, to‘g‘ridan-to‘g‘ri set ga qo‘shib bo‘lmaydi.https://t.me/simplypythonuz
🔁 Counter.elements() metodi — Python'da foydali imkoniyat!
✅ Har bir element o‘z qiymati (soni) nechta bo‘lsa, shuncha marta chiqariladi.
✅ Tartib saqlanadi — ya'ni elementlar
🚫 Agar element qiymati 1 dan kam bo‘lsa, u umuman chiqarilmaydi.
📌 Misol:
Python'da ma'lumotlar bilan ishlashni osonlashtiruvchi usullardan biri 💡
Counter.elements() — bu metod har bir elementni uning soniga qarab takrorlab, iterator ko‘rinishida qaytaradi.✅ Har bir element o‘z qiymati (soni) nechta bo‘lsa, shuncha marta chiqariladi.
✅ Tartib saqlanadi — ya'ni elementlar
Counter yaratilganidagi ketma-ketlikda bo‘ladi.🚫 Agar element qiymati 1 dan kam bo‘lsa, u umuman chiqarilmaydi.
📌 Misol:
from collections import Counter
cnt = Counter({'a': 3, 'b': 1, 'c': 0})
print(list(cnt.elements()))
# Natija: ['a', 'a', 'a', 'b']
Python'da ma'lumotlar bilan ishlashni osonlashtiruvchi usullardan biri 💡
Xayrli tong! So'ngi paytlarda python olamidagi eng katta o'zgarishlardan biri bu uv bo'lsa kerak.
Menimcha ko'pchilik duch kelayotgan yoki ishlatishni boshlagan ushbu vosita haqida ozgina ma'lumot bersak foydadan holi bo'lmaydi. Demak boshladik:
uv bu Rust dasturlash tilida yozilgan, pip, venv, piptools va boshqa shunga o'xshash kutubxonlarning o'rnini bosa oladigan python kutubxonasidir.
Uning eng asosiy afzalligi tezlik bo'lib, pip dan 100 karragacha tezroq ishlashi mumkin.
Ha, tushunganingizdek butun dunyo pip install dan voz kechib uv add ga kamida uv pip install ga o'tmoqda.
Tezlikdan tashqari, uv ancha qulayhamdir.
Masalan, biz o'rgangan pip, venv dan foydalanib biron loyiha yaratishda avval venv yordamida virual muhit yaratiladi, pip install yordamida kerakli kutubxonalar qo'shiladi, requirements.txt to'ldirilib boriladi va hokazo.
uv yordamida esa:
uv init .
uv add <package_name>
va hammasi tayyor! pyproject.toml fayli orqali barcha kutubxonalar ro'yxati yuritiladi. Kutubxonalarni ushbu faylga yozib/o'chirib uv sync buyrug'i yozilsa, kutubxonalar avtomatik o'rnatiladi/o'chiriladi.
Bundan tashqari, uv da loyiha uchun alohida, bitta script uchun alohida yondashuv qilingan.
Qisqa qilib aytganda juda qulay.
Quyida ushbu vositani foydalanish uchun asosiy buyruqlar keltirilgan:
Python versiyasini o'rnatish:
uv python install 3.8
Scriptni ishga tushirish:
uv run main.py
Scriptni ishga tushirishda python versiyani belgilash:
uv run —python 3.9.21 main.py
Scriptni ishga tushirishda biron kutubxonani (ushbu buyruqda rich va requests) o'rnatib ishga tushirish:
uv run —with rich —with requests —python 3.9 main.py
Scriptni ishga tushirishda kerak bo'ladigan python versiya hamda kutubxonlarni scriptning o'zida belgilab qo'yish:
uv init —script main.py —python 3.9.21
uv add —script main.py "rich"
uv add —script main.py "requests"
Faqat bitta script emas, Loyiha boshqaruvi uchun buyruqlar:
uv init . # Kerakli fayllarni yaratadi.
uv add rich # rich kutubxonasini venv direktoriyasiga o'rnatadi hamda pyproject.toml ni yangilaydi
uv remove rich # rich rich kutubxonasini venv direktoriyasidan o'chiradi hamda pyproject.toml ni yangilaydi
uv sync # pyproject.toml, .python-version bilan venv o'rtasida sinxronizatsiyani amalga oshiradi.
Boshqa ma'lumotlarni quyidagi havola orqali ko'rib olishingiz mumkin.
Izohlarda fikringizni qoldiring, foydali deb hisoblasangiz boshqalarga ham ulashishni unutmang.
Kuningiz xayrli o'tsin!
@simplypythonuz
Menimcha ko'pchilik duch kelayotgan yoki ishlatishni boshlagan ushbu vosita haqida ozgina ma'lumot bersak foydadan holi bo'lmaydi. Demak boshladik:
uv bu Rust dasturlash tilida yozilgan, pip, venv, piptools va boshqa shunga o'xshash kutubxonlarning o'rnini bosa oladigan python kutubxonasidir.
Uning eng asosiy afzalligi tezlik bo'lib, pip dan 100 karragacha tezroq ishlashi mumkin.
Ha, tushunganingizdek butun dunyo pip install dan voz kechib uv add ga kamida uv pip install ga o'tmoqda.
Tezlikdan tashqari, uv ancha qulayhamdir.
Masalan, biz o'rgangan pip, venv dan foydalanib biron loyiha yaratishda avval venv yordamida virual muhit yaratiladi, pip install yordamida kerakli kutubxonalar qo'shiladi, requirements.txt to'ldirilib boriladi va hokazo.
uv yordamida esa:
uv init .
uv add <package_name>
va hammasi tayyor! pyproject.toml fayli orqali barcha kutubxonalar ro'yxati yuritiladi. Kutubxonalarni ushbu faylga yozib/o'chirib uv sync buyrug'i yozilsa, kutubxonalar avtomatik o'rnatiladi/o'chiriladi.
Bundan tashqari, uv da loyiha uchun alohida, bitta script uchun alohida yondashuv qilingan.
Qisqa qilib aytganda juda qulay.
Quyida ushbu vositani foydalanish uchun asosiy buyruqlar keltirilgan:
Python versiyasini o'rnatish:
uv python install 3.8
Scriptni ishga tushirish:
uv run main.py
Scriptni ishga tushirishda python versiyani belgilash:
uv run —python 3.9.21 main.py
Scriptni ishga tushirishda biron kutubxonani (ushbu buyruqda rich va requests) o'rnatib ishga tushirish:
uv run —with rich —with requests —python 3.9 main.py
Scriptni ishga tushirishda kerak bo'ladigan python versiya hamda kutubxonlarni scriptning o'zida belgilab qo'yish:
uv init —script main.py —python 3.9.21
uv add —script main.py "rich"
uv add —script main.py "requests"
Faqat bitta script emas, Loyiha boshqaruvi uchun buyruqlar:
uv init . # Kerakli fayllarni yaratadi.
uv add rich # rich kutubxonasini venv direktoriyasiga o'rnatadi hamda pyproject.toml ni yangilaydi
uv remove rich # rich rich kutubxonasini venv direktoriyasidan o'chiradi hamda pyproject.toml ni yangilaydi
uv sync # pyproject.toml, .python-version bilan venv o'rtasida sinxronizatsiyani amalga oshiradi.
Boshqa ma'lumotlarni quyidagi havola orqali ko'rib olishingiz mumkin.
Izohlarda fikringizni qoldiring, foydali deb hisoblasangiz boshqalarga ham ulashishni unutmang.
@simplypythonuz
docs.astral.sh
uv
uv is an extremely fast Python package and project manager, written in Rust.
👍3❤1
🔍 Python'dagi
Python juda foydali bo‘lgan
📘 Misol:
🔎
Yana misollar:
🚀 Juda oddiy, lekin kuchli vosita!
https://t.me/simplypythonuz
difflib — matnlar o‘rtasida o‘xshashlikni topish!Python juda foydali bo‘lgan
difflib kutubxonasini taqdim etadi. U orqali matnlardagi o‘xshashliklarni topish mumkin — ayniqsa, so‘zlar orasidan eng yaqinlarini tanlash kerak bo‘lsa, juda qulay.📘 Misol:
import difflib
words = ["apple", "ape", "appeal", "par", "parade"]
print(difflib.get_close_matches("appel", words))
# ➝ ['appeal', 'apple', 'ape']
🔎
"appel" so‘ziga eng o‘xshashlari qaytarildi. Bu difflib.get_close_matches() funksiyasi orqali bo‘ldi.Yana misollar:
print(difflib.get_close_matches("pa", words))
# ➝ ['par']
print(difflib.get_close_matches("par", words))
# ➝ ['par', 'parade']
"parade" boshlanishi "par" ga o‘xshaganligi sababli chiqarildi.🚀 Juda oddiy, lekin kuchli vosita!
https://t.me/simplypythonuz
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Lirik chekinish😂
⏱️ Python'da mikrosekundgacha aniqlik —
Agar siz loglar, metrikalar yoki vaqt qatorlari bilan aniq vaqt bilan ishlayotgan bo‘lsangiz,
📌 Misol:
📅 Formatlar:
🧠 Bu — vaqtni yuqori aniqlikda tahlil qilishda ayni muddao!
https://t.me/simplypythonuz
datetime.strptime() bilan!Agar siz loglar, metrikalar yoki vaqt qatorlari bilan aniq vaqt bilan ishlayotgan bo‘lsangiz,
datetime.strptime() metodida "%f" formatini unutmang!📌 Misol:
from datetime import datetime
dt = datetime.strptime('2024-06-18 12:34:56.789123', '%Y-%m-%d %H:%M:%S.%f')
print(dt) # ➝ 2024-06-18 12:34:56.789123
📅 Formatlar:
%Y — yil (4 raqam)%m — oy%d — kun%H — soat (24 soatlik format)%M — daqiqa%S — soniya%f — mikrosekund ⚡️🧠 Bu — vaqtni yuqori aniqlikda tahlil qilishda ayni muddao!
https://t.me/simplypythonuz
👍1
🧊 Lug‘atdan xavfsiz qiymat olish —
Ba'zida lug‘atdan (
📌 Misol:
🚫
✅
🎯 Natija:
https://t.me/simplypythonuz
.get() yordamida!Ba'zida lug‘atdan (
dict) qiymat olish kerak bo‘ladi, lekin kalit mavjud emas bo‘lishi mumkin. Bunday hollarda if yozib tekshirish o‘rniga — .get() metodidan foydalaning ✅📌 Misol:
data = {"name": "Ali"}
# Xavfsiz tarzda qiymat olish
age = data.get("age", 0) # Agar "age" yo‘q bo‘lsa, 0 qaytadi
🚫
data["age"] — bu xatolik beradi, agar kalit yo‘q bo‘lsa.✅
data.get("age", 0) — xatolik bo‘lmaydi, default qiymat qaytadi.🎯 Natija:
.get() metodi kodni toza, xavfsiz va o‘qilishi oson qiladi — ayniqsa ixtiyoriy yoki noma'lum ma'lumotlar bilan ishlaganda!https://t.me/simplypythonuz
🧠
Python’dagi
🔧 Sintaksis:
📥 Parametr:
📤 Natija:
📌Qachon foydali?
Agar siz xotirani boshqarish, obyektlarga “noan’anaviy” usulda havola qilish, yoki garbage collector bilan ishlayotgan bo‘lsangiz — bu funksiya ayni kerakli narsa!
yopiq kanal: https://t.me/+G8Ao2nlAzBQ0ZGIy
yopiq kanaldagi post: https://t.me/c/2447128954/10
Garbage collector haqida batafsil quyidagi yopiq kanalda:
yopiq kanal: https://t.me/+G8Ao2nlAzBQ0ZGIy
yopiq kanaldagi post: https://t.me/c/2447128954/12
Zaif havola haqida batafsil quyidagi yopiq kanalda:
yopiq kanal: https://t.me/+G8Ao2nlAzBQ0ZGIy
yopiq kanaldagi post: https://t.me/c/2447128954/11
https://t.me/simplypythonuz
getweakrefcount() — ob’yektga nechta “zaif havola” bor?Python’dagi
weakref.getweakrefcount() funksiyasi — ob’yektga bog‘langan barcha zaif havolalar (weak references) va proksi obyektlar sonini qaytaradi.🔧 Sintaksis:
import weakref
weakref.getweakrefcount(obj)
📥 Parametr:
obj — tekshirilayotgan ob’yekt.📤 Natija:
int — ob’yektga bog‘langan zaif havola va proksi obyektlar soni.📌Qachon foydali?
Agar siz xotirani boshqarish, obyektlarga “noan’anaviy” usulda havola qilish, yoki garbage collector bilan ishlayotgan bo‘lsangiz — bu funksiya ayni kerakli narsa!
getweakrefcount() haqida batafsil quyidagi yopiq kanalda:yopiq kanal: https://t.me/+G8Ao2nlAzBQ0ZGIy
yopiq kanaldagi post: https://t.me/c/2447128954/10
Garbage collector haqida batafsil quyidagi yopiq kanalda:
yopiq kanal: https://t.me/+G8Ao2nlAzBQ0ZGIy
yopiq kanaldagi post: https://t.me/c/2447128954/12
Zaif havola haqida batafsil quyidagi yopiq kanalda:
yopiq kanal: https://t.me/+G8Ao2nlAzBQ0ZGIy
yopiq kanaldagi post: https://t.me/c/2447128954/11
https://t.me/simplypythonuz
🔥1
🛑
Ko‘pchilik bilmaydi: Python’da
🧩 Bu
📘 Misol:
🟢 Agar toq son topilsa — break bilan chiqiladi va else ishlamaydi.
🔵 Aks holda — sikl oxirigacha “tabiiy” tugasa, else ishlaydi.
🎯 Natija:
✅ Qidiruv muvaffaqiyatli tugaganmi yoki yo‘qmi — farqlay olasiz
✅ Valdatsiya, test, yoki filtrlash holatlarini aniq ko‘rsatishingiz mumkin
✅ Kodni yanada tartibli va tushunarli qilasiz
❗️ Juda kam ishlatiladi, lekin foydali imkoniyat!
https://t.me/simplypythonuz
for/else — siklni to‘xtatish va “muvaffaqiyatli tugash”ni ajratishKo‘pchilik bilmaydi: Python’da
for va while sikllari else bloki bilan ishlashi mumkin!🧩 Bu
else faqat sikl break bilan to‘xtatilmagan bo‘lsa, ishga tushadi.📘 Misol:
nums = [2, 4, 6, 8]
for n in nums:
if n % 2 != 0:
print("Toq son topildi!")
break
else:
print("Barcha sonlar juft.")
🟢 Agar toq son topilsa — break bilan chiqiladi va else ishlamaydi.
🔵 Aks holda — sikl oxirigacha “tabiiy” tugasa, else ishlaydi.
🎯 Natija:
for/else orqali siz:✅ Qidiruv muvaffaqiyatli tugaganmi yoki yo‘qmi — farqlay olasiz
✅ Valdatsiya, test, yoki filtrlash holatlarini aniq ko‘rsatishingiz mumkin
✅ Kodni yanada tartibli va tushunarli qilasiz
❗️ Juda kam ishlatiladi, lekin foydali imkoniyat!
https://t.me/simplypythonuz
🔗 ChainMap — bir nechta lug‘atni bitta ko‘rinishda boshqarish!
Python’dagi
🧠 Bu ayniqsa quyidagi holatlarda juda foydali:
🔄 Turli darajadagi konfiguratsiyalar (masalan: default + user config)
📦 Har xil kontekstlar yoki sohalar (scope)
📋 Bir nechta
📘 Misol:
🧩
➡️ Tartib = ustuvorlik!
🎯 Foyda:
✅ Kod ancha soddalashadi
✅ Qo‘lda birlashtirish yoki update() qilishga hojat qolmaydi
✅ Har bir dict asl holicha saqlanib qoladi — hech nima o‘zgarmaydi
🛠 ChainMap — ko‘p lug‘atli holatlarda toza va tartibli yechim!
https://t.me/simplypythonuz
Python’dagi
collections modulidagi ChainMap — bu bir nechta dict (lug‘at) obyektini bitta birlashtirilgan ko‘rinishda boshqarish imkonini beradi.🧠 Bu ayniqsa quyidagi holatlarda juda foydali:
🔄 Turli darajadagi konfiguratsiyalar (masalan: default + user config)
📦 Har xil kontekstlar yoki sohalar (scope)
📋 Bir nechta
dict ni prioritet asosida izlash📘 Misol:
from collections import ChainMap
default = {'lang': 'uz', 'theme': 'light'}
user = {'theme': 'dark'}
config = ChainMap(user, default)
print(config['theme']) # ➝ dark (user'ning qiymati ustun)
print(config['lang']) # ➝ uz (defaultdan olindi)
🧩
ChainMap birinchi lug‘atdan boshlab qidiradi, topmasa keyingisiga o‘tadi.➡️ Tartib = ustuvorlik!
🎯 Foyda:
✅ Kod ancha soddalashadi
✅ Qo‘lda birlashtirish yoki update() qilishga hojat qolmaydi
✅ Har bir dict asl holicha saqlanib qoladi — hech nima o‘zgarmaydi
🛠 ChainMap — ko‘p lug‘atli holatlarda toza va tartibli yechim!
https://t.me/simplypythonuz
🧮 Fayl tizimidagi disk hajmini aniqlash: statvfs() va muqobillari
Python’da fayl tizimi haqida ma’lumot olish uchun
🛑 Xatolik:
Agar siz Windows tizimida bo‘lsangiz va quyidagi kodni yozsangiz:
❌ Quyidagi xato chiqadi:
📌 Sabab:
Windows’da bu funksiya umuman mavjud emas.
✅ Kross-platformali yechim:
Windows va Linux’da ishlaydigan universal usul:
🟢 Har bir operatsion tizimda ishlaydi
🧠 Natijalar bayt birligida qaytadi → GB ga o‘girib ko‘rsatamiz
💡 Qo‘shimcha:
Agar siz yanada batafsil statistikani xohlasangiz,
🎯 Xulosa:
Usul - Platforma - Tavsiya
https://t.me/simplypythonuz
Python’da fayl tizimi haqida ma’lumot olish uchun
os.statvfs() funksiyasi ishlatiladi, lekin...🛑 Xatolik:
Agar siz Windows tizimida bo‘lsangiz va quyidagi kodni yozsangiz:
import os
stat = os.statvfs('D:/')
❌ Quyidagi xato chiqadi:
AttributeError: module 'os' has no attribute 'statvfs'
📌 Sabab:
os.statvfs() faqat UNIX (Linux/macOS) tizimlarda mavjud.Windows’da bu funksiya umuman mavjud emas.
✅ Kross-platformali yechim:
shutil.disk_usage()Windows va Linux’da ishlaydigan universal usul:
import shutil
total, used, free = shutil.disk_usage("D:/")
print(f"Umumiy hajm: {total / (1024**3):.2f} GB")
print(f"Ishlatilgan: {used / (1024**3):.2f} GB")
print(f"Bo‘sh joy: {free / (1024**3):.2f} GB")
🟢 Har bir operatsion tizimda ishlaydi
🧠 Natijalar bayt birligida qaytadi → GB ga o‘girib ko‘rsatamiz
💡 Qo‘shimcha:
psutil bilan qulay yechimAgar siz yanada batafsil statistikani xohlasangiz,
psutil kutubxonasini o‘rnatib foydalaning:
pip install psutil
import psutil
disk = psutil.disk_usage("D:/")
print(f"Bo‘sh joy: {disk.free / (1024**3):.2f} GB")
🎯 Xulosa:
Usul - Platforma - Tavsiya
os.statvfs() - Linux/macOS - UNIX tizimlarida ishlaydishutil.disk_usage() - ✅ Har doim - Kross-platformali va oddiypsutil.disk_usage() - ✅ Har doim - Ko‘proq imkoniyatlihttps://t.me/simplypythonuz
❤1
#masala #leetcode #explanition #med. #pythonadvanced
Quyida
(bu mening yechimim va eng optimal yechim bo'lmasligi mumkin)
3. Longest Substring Without Repeating Characters
Bir qarashda oddiy misoldek tuyulishi mumkin, va aytishingiz mumkin oddiy ichma-ich for orqali yechish mumkin deb, lekin bu holda vaqt murakkabligi oshib ketadi. Dastur bajarilishiga ketgan vaqt meyoridan oshib testdan o'ta olmaydi.
Yuqoridagi yechim esa vaqt meyori talablariga ham javob beradi.
Tasavvur qilaylik biz izlagan qism satr berilgan
shuningdek, bizga pustoy
bittalik for sikli orqali biz berilgan
lekin qachonki biz qo'shmoqchi bo'lgan belgi
Shunday qilib for siklining har bir siklida hosil bo'lgan qism satr (
(
)
Boshlovchilar uchun yopiq kanalimiz:
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
Leetcode masalalari bo'yicha:
https://t.me/+x2ag7zS70DQyMjJi
https://t.me/simplypythonuz
Quyida
leetcode dagi 3 - masala, yechimi tushuntirilgan (bu mening yechimim va eng optimal yechim bo'lmasligi mumkin)
3. Longest Substring Without Repeating Characters
masala sharti: s satr berilgan (string turidagi o'zgaruvchi), s satr ichidagi birorta belgi takrorlanmagan eng uzun qism satr uzunligini toping.masala yechimi:class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
left_position = 0
substring_finding = set()
substring_length = 0
for right_position in range(len(s)):
while s[right_position] in substring_finding:
substring_finding.remove(s[left_position])
left_position += 1
substring_finding.add(s[right_position])
substring_length = max(substring_length, len(substring_finding))
return substring_length
masala tahlili:Bir qarashda oddiy misoldek tuyulishi mumkin, va aytishingiz mumkin oddiy ichma-ich for orqali yechish mumkin deb, lekin bu holda vaqt murakkabligi oshib ketadi. Dastur bajarilishiga ketgan vaqt meyoridan oshib testdan o'ta olmaydi.
Yuqoridagi yechim esa vaqt meyori talablariga ham javob beradi.
Yechimning g'oyasi:Tasavvur qilaylik biz izlagan qism satr berilgan
s satrning qaysidir qismida joylashgan va u albatta s satrning qaysidir pozitsiyasidan (left_position) boshlanib qaysidir positsiyasida (right_position) tugaydi. Biz bu o'zgaruvchilarga boshlang'ich qiymat nolni o'zlashtiramiz (biz izlashni s satrning boshidan boshlaganimiz uchun boshlang'ich left_position ga nol qiymat beramiz),shuningdek, bizga pustoy
s satr berilishi mumkinligini ham inobatga olib substring_length ga ham nol qiymat bervolamiz. substring_finding ni takrorlanuvchi elementga ega bo'lmagan tur set() deb e'lon qilamiz (biz izlagan qism satrni o'zi mavjud bo'lmasligini ham inobatga olgan holda u ham boshlanishida bo'sh bo'ladi) .bittalik for sikli orqali biz berilgan
s satrdan boshidan boshlab bittadan harfni substring_finding ga qo'shib boramiz,lekin qachonki biz qo'shmoqchi bo'lgan belgi
substring_finding tarkibida bor bo'lsa (while siklining ichi) (bu biz qidirayotgan qism satr talabiga mos kelmaydi chunki biz tarkibida takrorlanuvchi belgi bo'lmagan qism satr qidiryapmiz) substring_finding tarkibidagi shu belgi o'chib ketmaguncha substring_finding ning birinchi elementini (s satrning left_position pozitsiyasida turgan elementi s[left_position] ni) o'chiramiz va left_position qiymatini keyingi belgi pozitsiyasiga o'zgartirib qo'yamiz (left_position +=1). Shunday qilib for siklining har bir siklida hosil bo'lgan qism satr (
substring_finding ) ning uzunligini shu vaqtgacha topilgan eng uzun uzunlik bilan solishtirib turamiz va uzunrog'i topilsa yangi uzunlikni o'zlashtiramiz (
substring_length = max( substring_length, len( substring_finding))
Boshlovchilar uchun yopiq kanalimiz:
https://t.me/+4-HzPYPUWWw3NDEy
Python bo'yicha ozroq tajriba ega bo'lganlar uchun yopiq kanal:
https://t.me/+G8Ao2nlAzBQ0ZGIy
Leetcode masalalari bo'yicha:
https://t.me/+x2ag7zS70DQyMjJi
https://t.me/simplypythonuz