תוכן של משתנים נמחק למרות שלא הרצתי עליהם פעולות?

היי, זה לא לשיעור בית, אבל נתקלתי בתופעה מעניינת שאני לא מצליח להסביר.
הנה קוד שכתבתי:
> def flip_order(userlist):
> newlist = []
> i = 0
> while i < len(userlist):
> temp = userlist.pop()
> newlist.append(temp)
> return newlist
>
> def double_and_flip(newlist):
> templist = newlist
> newtemp = flip_order(templist)
> templist = newlist + newtemp
> return templist
>
> double_and_flip([1, 2, 3])
התוצאה שהוא מחזיר היא 3, 2, 1.
כשהסתכלתי בpython visauliser
הוא הראה שהרשימה ההתחלתית נמחקת כשהפונקציה הראשונה מריצה את השניה, גם מהמשתנה ששמרתי בו את הקלט, למרות שלא עשיתי עליו פעולות…
אפשר בבקשה הסבר ודרך חלופית?

מחברת חמש מסבירה את הפער הזה -
המשתנים מצביעים לאותו ID שיש שם מערך שהוא mutable ולכן הפעולות קורות עליו ולא מייצרות מערך חדש.

לייק 1