← بازگشت به تالار
هنرجو حل‌شده

تفاوت Generator Expression و List Comprehension در Python چیست؟

علی محمدی 1405/05/16 11:20 💬 1 پاسخ ◉ 132 بازدید
برای پردازش یک فایل بزرگ می‌توانم از [x for x in items] یا (x for x in items) استفاده کنم. کدام انتخاب حافظه کمتری مصرف می‌کند و چه زمانی List Comprehension انتخاب بهتری است؟

پاسخ‌ها

1 پاسخ ثبت‌شده
مهندس امیررضا مرادی مدرس ✓ پاسخ پذیرفته‌شده
List Comprehension تمام خروجی را همان لحظه در حافظه می‌سازد و زمانی مناسب است که به طول، Index یا چند بار پیمایش داده نیاز دارید. Generator Expression مقدارها را Lazy و یکی‌یکی تولید می‌کند؛ بنابراین برای فایل بزرگ، Stream و Pipeline پردازش حافظه بسیار کمتری مصرف می‌کند. نمونه: total = sum(int(line) for line in file if line.strip()) در این مثال نیازی به ساخت یک List کامل نیست. توجه کنید Generator پس از یک بار پیمایش مصرف می‌شود؛ اگر چند بار به داده نیاز دارید، آن را دوباره بسازید یا آگاهانه به List تبدیل کنید.
▲ 13 ▼ 0