حالت آفلاین — محتوا از حافظهٔ کش نمایش داده می‌شود
آموزش دیباگ و تست‌نویسی در پایتون؛ رفع خطا با تمرین

پیش‌بینی کپی فهرست در پایتون؛ تفاوت alias و list.copy

دیباگ تابع و فهرست در پایتون · 0٪

متغیرهای فهرستی خود داده رو کپی نمی‌کنن؛ انتساب می‌تونه دو نام رو به همان فهرست وصل کنه. به این اشتراک ارجاع گاهی alias می‌گیم. اگر از یکی از نام‌ها append انجام بدیم، نام دیگر هم همان تغییر رو می‌بینه. برای فهرست ساده می‌تونیم با copy یک فهرست بیرونی تازه بسازیم.

در مثال، کپی فهرست نام‌ها اجازه می‌ده مورد جدید فقط به نسخه تازه اضافه بشه. سؤال اصلی عمداً copy نداره و باید نتیجه واقعی انتساب رو بخونی. خطای رایج تصور اینه که علامت مساوی همه عضوها رو تکثیر می‌کنه. اگر قرار باشه یک تابع ورودی رو تغییر نده، باید از این اشتراک حواسمون جمع باشه. کپی سطحی برای عضوهای تو‌در‌تو تضمین استقلال کامل نمی‌ده، ولی این درس فقط فهرست عددهای ساده داره. بنابراین نیازی به کتابخانه یا deep copy نداریم. به هویت ظرف بیرونی و عمل تغییردهنده append توجه کن و قبل از انتخاب جواب دو نام رو به یک جعبه ذهنی وصل کن.

✍️ مثال حل‌شده:

names = ["سارا"]
copy_names = names.copy()
copy_names.append("مینا")
assert names == ["سارا"]

حالا نوبت توئه: کد سؤال a=[1,2] و سپس b=a و b.append(3) را اجرا می‌کند. مقدار نهایی a و b را انتخاب کن. اینجا copy یا ساخت فهرست تازه وجود ندارد و عضوها عدد ساده‌اند؛ فقط اثر انتساب و append را در نظر بگیر.

فعالیت شما

کد سؤال a=[1,2] و سپس b=a و b.append(3) را اجرا می‌کند. مقدار نهایی a و b را انتخاب کن. اینجا copy یا ساخت فهرست تازه وجود ندارد و عضوها عدد ساده‌اند؛ فقط اثر انتساب و append را در نظر بگیر.

مطالعهٔ این گام برای همه آزاد است

برای پاسخ‌دادن، بررسی پاسخ، ثبت پیشرفت و استفاده از دستیار باید شرایط شرکت در فعالیت‌ها را داشته باشید.

برای انجام فعالیت وارد شوید

فعالیت‌های این بخش به اشتراک فعال نیاز دارند. تهیهٔ اشتراک

برای انجام فعالیت‌ها ابتدا این دوره‌های پیش‌نیاز را تکمیل کنید:

کد اولیهٔ فعالیت

a = [1, 2]
b = a
b.append(3)

گزینه‌های پیش‌بینی خروجی

  1. a برابر [1,2] و b برابر [1,2,3] است.
  2. a برابر [3] و b برابر [1,2] است.
  3. هر دو [1,2,3] هستند.