רשימות נמחקות בשימוש בתוך פונקציות

היי,

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

יחד עם זאת - אני לא מבין מדוע כאשר אני מעביר רשימה לתוך פונקציה כארגומנט
גם אם בהגדרה של הפונקציה למשל השם לא זהה:

def x(other_list):
    other_list.pop()
    return other_list

my_list= [1,2,3]
x(my_list)
print(my_list)

#output:
[1,2]

עכשיו זה הולך ונהיה לי יותר מוזר כאשר אם למשל בתוך הפונקציה אני עושה השמה של הרשימה הזו למשתנה חדש
ועושה עליו את הפעולה, עדין ! זה משנה לי את הרשימה המקורית.

def x(other_list):
    temp = other_list
    temp.pop()
    return temp

my_list= [1,2,3]
x(my_list)
print(my_list)

#output:
[1,2]

בגדול אין לי בעיה שהרשימה המקורית תמחק כי אני מגיע לתשובות שאני רוצה
אבל נגיד במצב בו אני לא רוצה לאבד את הנתונים האלה כי אולי אצטרך אותם בעתיד מה עושים ?

הצילו ! :slight_smile:

לייק 1

לא יודעת אם כבר קראת את מחברת 5 שמסבירה את זה או שאתה במחברת 4. אם במחברת 4 - כדאי לקפוץ למחברת 5 לכמה דקות :slight_smile:
באופן כללי כשיש כמה משתנים שמצביעים לאותה הרשימה (לא לרשימות שונות עם אותם איברים, ממש לאותה הרשימה), כל שינוי יהיה רלוונטי לכל המשתנים כי זה שינוי ברשימה עצמה.

לייק 1

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

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

תודה רבה :slight_smile:

אם אתה שואל אותי, עזוב את זה בנתיים עד שתגיע למחברת 5.
זו התנהגות של השפה שמוסברת יותר לעומק במחברת הבאה :slight_smile:

2 לייקים

תודה ! אעשה כפי שהצעתם :slight_smile: