سلام . من محمد جواد حق بیگیم دانش آموز کلاس هشتم تیزهوشان(تیزهوشان انصافا خیلی سخته) . عاشق برنامه نویسیم و امیدوارم حالتون خوب باشه:)
کپی و دیپ کپی در پایتون
سلام به همتون.محمدجواد حق بیگی هستم و اومدیم با یه آموزش جدید در این دفعه قراره کپی و دیپ کپی رو یادتون بدم که حلال خیلی از مشکلاتتونه.
اول بیاید با یک مثال شروع کنیم
a = 1
b = a
b += 1
print(a)
خب مطمئن هستیم که عدد ۱ رو پرینت میکنه ولی:
a = [1,2]
b = a
b.append(3)
print(a)
خب شما احتمالا فکر می کنید خروجی [1,2] هست ولی اشتباه می کنید و خروجی [1,2,3] هستش.
خوب ولی اگه از کپی و دیپ کپی استفاده کنیم:
import copy
a = [1,2]
b=copy.copy(a)
b.append(3)
print(a)
خب الان خروجی دو هست و همین قضیه برای دیپ کپی هم برقراره
import copy
a = [1,2]
b = copy.deepcopy(a)
print(a)
#output -- > [1,2]
حالا فرق اینها چیه(copyو deepcopy و حالت معمولی)؟
assignment:
import copy
a = [1,2,3]
b = [4,5,6]
c = [a,b]
d = c
print(id(d) == id(c)) # --> True
print(id(d[0]) == id(c[0])) # --> True
این کد پاسخ درست می دهد چون d همان c است. و همچنین d[0] همان c[0] است.
copy:
import copy
a = [1,2,3]
b = [4,5,6]
c = [a,b]
d = copy.copy(c)
print(id(d) == id(c)) # --> False
print(id(d[0]) == id(c[0])) # --> True
اولی کد پاسخ False می دهد چون d یک لیست جدید است ولی دومی پاسخ True است چون که در copy.copy فقط خود لیست کپی می شود و محل اجزای داخل آن در رم برابر است مثلا محل c[0] و d[0] در رم با هم برابر است.
deepcopy:
import copy
a = [1,2,3]
b = [4,5,6]
c = [a,b]
d = copy.deepcopy(c)
print(id(d) == id(c)) # --> False
print(id(d[0]) == id(c[0])) # --> False
اولی کد پاسخ False می دهد چون d یک لیست جدید است و دومی هم پاسخ False می دهد چون که در deepcopy هم اجزا و هم خود لیست کپی می شوند و محل همه انها در رم متفاوت است.
به عنوان مثال اگر id(d[0])در 0x72b9df992000 رم قرار داشته باشد id(c[0]) در 0x742f53595f40 قرار دارد.
ممنون از اینکه این مطلب رو خوندید یادتون نره به سایت هم سر بزنید(البته هنوز ناقصه) با تشکر از همتون
لینک:https://mohammadjavad12.github.io/irnelm
خداحافظ.
مطلبی دیگر از این انتشارات
آموزش ساخت ویروس 3
مطلبی دیگر از این انتشارات
اموزش کنترل موس با پایتون
مطلبی دیگر از این انتشارات
اموزش ساخت پیام رسان با پایتون