אחד הדברים הראשונים שכל Python developer למד לעשות ולא נכון: my_list.pop(0). זה עובד. הקוד רץ. אין שגיאות. ורק כשה-list גדל ל-100,000 אלמנטים, ה-API שלכם מתחיל לקבל timeouts.
pop(0) הוא O(n). כשאתם מסירים אלמנט מתחילת list, Python מזיזה את כל שאר האלמנטים אחורה. 100,000 אלמנטים - 100,000 moves. בכל קריאה. זה לא hypothetical: ראיתי production code שעשה בדיוק את זה, ורק אחרי פרופילינג הבינו למה ה-queue processing שלהם לוקח 10x יותר ממה שצפוי.
הפתרון: collections.deque. אבל זה בסוף השיעור. נתחיל מהבסיס.