Isoqjanov Ilyos | Python
📘 #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👇
3 · 975 ·