Django Expert
9.71K subscribers
991 photos
81 videos
113 files
1.34K links
✔️ بزرگترین کانال و جامعه جنگو به فارسی
Contact:
@majid_aghamohamad
@BobyCloud

Group:
@DjangoIR

Our Site ;coming soon:
🔜 PyExpert.ir

تبلیغات نداریم فقط درج آگهی های استخدامی مرتبط پذیرفته می‌شود
Download Telegram
Forwarded from Django Expert (Amir Rahmani)
✔️ programming problems - Bradley Green (1 & 2)

#algorithm #data_structure #intetview #cpp
#Book #English_book
〰️〰️〰️〰️〰️
©️ @DjangoEx
✔️ سوال: چرا با وجود این که دو لیست a و b مقدار برابر دارند، اما حجم اشغال شده در حافظه برای لیست b از لیست a بیشتر است؟

سطح: پیشرفته
#quiz #python #data_structure
〰️〰️〰️〰️〰️
© @DjangoEx
👍1
[1/2]
✔️ پاسخ سوال: در تصویر 1 لیستی به نام a به طول 5 و محتوای object ایجاد کرده‌ایم. اگر به نمایش این لیست دقت کنید متوجه خواهید شد که تمامی اشیاء موجود در لیست a دارای یک آدرس یکسان در memory هستند. درواقع پایتون در این حالت برای جلوگیری از ساختن یک شئ ثابت به تعداد زیاد، اول یک نمونه از آن‌را ساخته و سپس تمامی اعضای آرایه را به آن ارجاع (reference) می‌دهد. اگر قطعه کد
sys.getrefcount(a[0])
را اجرا کنیم خروجی 6 (رفرنس) را برمی‌گرداند. مقدار 5 مورد انتظار است اما آن یک واحد اضافه به دلیل رفرنس موقتی است به عنوان ورودی تابع getrefcount ساخته شده است.
اما در حالت دوم داخل loop هربار یک شئ ایجاد می‌شود و آدرس‌ها تغییر می‌کند. این موضوع زمانی که قصد مقداردهی اولیه یک لیست با حجم بالا را داریم، هزینه زمانی و حافظه‌ای زیادی دارد.

دلیل تفاوت حجم لیست a و b در حافظه
با دقت به تصویر 2 متوجه خواهید شد که با تعریف لیست a به روش اول، تقریبا حجم 136 بایت در حافظه اشغال شده اما این مقدار برای لیست b برابر 184 می‌باشد.
〰️〰️〰️〰️〰️
© @DjangoEx