זכרו זכרו - שאלה על הערה

היי!

קיבלתי הערה על התרגיל “במקרה הזה, עדיף generator expression לדעתי”
העלתי שני פתרונות אפשריים עם גנרטור - הראשון עם גנרטור, אבל לא generator expression והשני עם generator expression. העניין הוא שגם בפתרון המקורי שלי וגם בפתרון הראשון עם הגנרטור (לא expression) הקוד מפסיק לרוץ אחרי שמוצא את השורה הנכונה ועובר הלאה לעמודה הבאה. עם ה-generator expression הוא ימשיך עד השורה התחתונה (אלא אם כן מחליפים את הלולאה ב-while עם תנאי של האם הפיקסל נמצא).

אז אני מנסה להבין - למה להשתמש ב- generator expression עדיף על משהו אחר? מה אני מפספסת פה? :sweat_smile:

אני שמה לינק לפתרון במערכת התרגילים (עבור הסגל, שאני מניחה שיכולים לראות את זה) במקום לשים פה את הקוד שלי כדי לא להרוס לאחרים :slightly_smiling_face:
https://solve.pythonic.guru/view/96135

היי,
שימי לב שבשאלה שהעלת ונבדקה לא היה כלל שימוש ב־generator, אלא ב־list comprehension.
גם שימוש ב־generator רגיל היה עובד אחלה :slight_smile:

כן, ברור לי, ה-generator המדובר בגרסה 2 של הפתרון וה-generator expression בגרסה 3 :slight_smile:

הא, לקח לי זמן להבין את השאלה :slight_smile:
היתרון ב־generator expression במקרה של הקוד שהגשת בפתרון הראשון הוא חיסכון בזכרון.

את צוברת את ערכי כל הפיקסלים ברשימה, ואז מבצעת עליהם join.
ב־list comprehension זה אומר שאת יוצרת רשימה בגודל C, כאשר C הוא רוחב התמונה.
ב־generator comprehension את מחזיקה בכל שלב רק איבר אחד בזיכרון.

לייק 1