آموزش پایتون - Python - Copy Arrays

در پایتون، کپی کردن یک آرایه به فرآیند ایجاد یک آرایه جدید اشاره دارد که شامل تمام عناصر آرایه اصلی است. این عملیات می‌تواند با استفاده از عملگر انتساب (=) و متد deepcopy() انجام شود. در این فصل، نحوه کپی کردن یک شیء آرایه به دیگری را بررسی می‌کنیم. اما قبل از پرداختن به جزئیات، اجازه دهید به طور خلاصه درباره آرایه‌ها صحبت کنیم.

انواع دنباله‌های توکار پایتون یعنی list، tuple و string مجموعه‌های اندیس‌گذاری‌شده‌ای از آیتم‌ها هستند. با این حال، برخلاف آرایه‌ها در C/C++، Java و غیره، آن‌ها همگن نیستند؛ به این معنی که عناصر موجود در این نوع مجموعه‌ها می‌توانند از انواع مختلفی باشند. ماژول array در پایتون به شما کمک می‌کند تا شیئی شبیه به آرایه‌های زبان جاوا ایجاد کنید.

آرایه‌های پایتون می‌توانند از نوع رشته، عدد صحیح یا عدد اعشاری باشند. سازنده کلاس array به صورت زیر استفاده می‌شود −

import array
obj = array.array(typecode[, initializer])

که در آن، typecode می‌تواند یک ثابت کاراکتری باشد که نوع داده را نشان می‌دهد.

کپی کردن آرایه‌ها با استفاده از عملگر انتساب

ما می‌توانیم یک آرایه را با استفاده از عملگر انتساب (=) به آرایه دیگری نسبت دهیم. با این حال، چنین انتسابی یک آرایه جدید در حافظه ایجاد نمی‌کند. در عوض، یک ارجاع جدید به همان آرایه ایجاد می‌کند.

مثال

در مثال زیر، از عملگر انتساب برای کپی کردن آرایه در پایتون استفاده می‌کنیم.

import array as arr
a = arr.array('i', [110, 220, 330, 440, 550])
b = a
print("Copied array:",b)
print (id(a), id(b))

این کد خروجی زیر را تولید خواهد کرد −

Copied array: array('i', [110, 220, 330, 440, 550])
134485392383792 134485392383792

مقدار id() مربوط به هر دو متغير a و b را بررسی کنید. یکسان بودن مقدار id تأیید می‌کند که انتساب ساده یک کپی ایجاد نمی‌کند. از آنجا که "a" و "b" به یک شیء آرایه اشاره می‌کنند، هرگونه تغییر در آرایه "a" در "b" نیز منعکس خواهد شد −

a[2] = 10
print (a,b)

این کد خروجی زیر را تولید خواهد کرد −

array('i', [110, 220, 10, 440, 550]) array('i', [110, 220, 10, 440, 550])

کپی کردن آرایه‌ها با استفاده از کپی عمیق (Deep Copy)

برای ایجاد یک کپی فیزیکی دیگر از یک آرایه، از ماژول دیگری در کتابخانه پایتون به نام copy و تابع deepcopy() در این ماژول استفاده می‌کنیم. یک کپی عمیق (Deep copy) یک شیء مرکب جدید می‌سازد و سپس به صورت بازگشتی، کپی‌های اشیاء موجود در اصل را درون آن وارد می‌کند.

مثال

مثال زیر نحوه کپی کردن آرایه در پایتون را نشان می‌دهد −

import array as arr
import copy
a = arr.array('i', [110, 220, 330, 440, 550])
b = copy.deepcopy(a)
print("Copied array:",b)

پس از اجرا، خروجی زیر تولید خواهد شد −

Copied array: array('i', [110, 220, 330, 440, 550])

اکنون id() هر دو متغیر "a" و "b" را بررسی کنید. خواهید دید که idها متفاوت هستند.

print (id(a), id(b))

این کد خروجی زیر را تولید خواهد کرد −

2771967069936 2771967068976

این موضوع ثابت می‌کند که یک شیء جدید "b" ایجاد شده است که یک کپی واقعی از "a" است. اگر یک عنصر را در "a" تغییر دهیم، در "b" منعکس نمی‌شود.

a[2]=10
print (a,b)

این کد خروجی زیر را تولید خواهد کرد −

array('i', [110, 220, 10, 440, 550]) array('i', [110, 220, 330, 440, 550])

پیشرفت مطالعه: وضعیت خوانده‌شدن این درس فقط در همین مرورگر ذخیره می‌شود؛ بدون نیاز به حساب کاربری.