برای سهولت، میتوان آرایه ها در پایتون را مانند یک راهپله تصور کرد که روی هر پله آن یک مقدار (مثلاً یکی از دوستان شما) قرار دارد. در این حالت، میتوانید فقط با دانستن تعداد پلههایی که دوستان شما روی آنها هستند، مکان هرکدام را شناسایی کنید.
در پایتون، میتوان از یک ماژول به نام “آرایه” برای مدیریت آرایهها استفاده کرد. این آرایه ها در پایتون زمانی که میخواهیم تنها با مقادیر خاص یک نوع داده سر و کار داشته باشیم، مفید هستند.
کاربر میتواند لیست ها در پایتون را به عنوان آرایهها استفاده کند، اما نمیتواند نوع عناصر ذخیره شده در یک لیست را محدود کند. اگر از ماژول آرایه برای ایجاد آرایهها استفاده شود، تمام عناصر آرایه باید از یک نوع باشند.
آرایه ها در پایتون چیست؟
یک آرایه مجموعهای از عناصر است که در مکانهای حافظه مجاور هم ذخیره میشوند. ایده آرایه ها در پایتون (python arrays) که در درس امروز دوره رایگان پایتون در دیتایاد در مورد آن می خواهیم صحبت کنیم، این است که چندین عنصر هم نوع، نزدیک یکدیگر ذخیره شوند. این امر باعث میشود موقعیت هر عنصر را با افزودن یک آفست به مقدار پایه، به عبارت دیگر مکان حافظه عنصر اول آرایه (که معمولاً با نام آرایه نشان داده میشود)، به راحتی محاسبه کنیم.
ایجاد یک آرایه
در پایتون، میتوان با وارد کردن ماژول آرایه یک آرایه ایجاد کرد. دستور array(data_type, value_list) برای ایجاد یک آرایه با نوع داده و لیست مقادیر مشخص شده در آرگومانهای آن استفاده میشود.
کد زیر دو آرایه ایجاد میکند: یکی از اعداد صحیح و دیگری از اعداد اعشاری. سپس محتوای هر آرایه را در کنسول چاپ میکند.
import array as arr a = arr.array('i', [1, 2, 3]) print("The new created array is : ", end=" ") for i in range(0, 3): print(a[i], end=" ") print() b = arr.array('d', [2.5, 3.2, 3.3]) print("\nThe new created array is : ", end=" ") for i in range(0, 3): print(b[i], end=" ")
خروجی:
The new created array is : 1 2 3 The new created array is : 2.5 3.2 3.3
پیچیدگیها برای ایجاد آرایهها:
زمان اجرا: O(1)
فضای کمکی: O(n)
برخی از انواع داده که در ایجاد یک آرایه از انواع مختلف به کمک شما میآید، در زیر آورده شدهاند.
افزودن عناصر به یک آرایه
عناصر میتوانند با استفاده از تابع ()insert به آرایه اضافه شوند. تابع insert برای درج یک یا چند عنصر داده در یک آرایه استفاده میشود. بر اساس نیاز، میتوان یک عنصر جدید را در ابتدا، انتها یا در هر اندیسی از آرایه درج کرد. تابع ()append همچنین برای افزودن مقدار مشخص شده در آرگومانهایش به انتهای آرایه استفاده میشود.
در کد، ابتدا ماژول `array` با نام `arr` وارد شده است. سپس، یک آرایه از اعداد صحیح با نام `a` و المانهای `[1, 2, 3]` ایجاد میشود. قبل و پس از درج عدد صحیح `4` در اندیس 1، آرایه ساخته شده چاپ میشود.
به همین ترتیب، یک آرایه از اعداد اعشاری با نام `b` و المانهای `[2.5, 3.2, 3.3]` ایجاد میشود و قبل و پس از افزودن عدد اعشاری `4.4` به آرایه، این آرایه نیز چاپ میشود.
import array as arr a = arr.array('i', [1, 2, 3]) print("Array before insertion : ", end=" ") for i in range(0, 3): print(a[i], end=" ") print() a.insert(1, 4) print("Array after insertion : ", end=" ") for i in (a): print(i, end=" ") print() b = arr.array('d', [2.5, 3.2, 3.3]) print("Array before insertion : ", end=" ") for i in range(0, 3): print(b[i], end=" ") print() b.append(4.4) print("Array after insertion : ", end=" ") for i in (b): print(i, end=" ") print()
خروجی:
Array before insertion : 1 2 3 Array after insertion : 1 4 2 3 Array before insertion : 2.5 3.2 3.3 Array after insertion : 2.5 3.2 3.3 4.4
پیچیدگیها برای افزودن عناصر به آرایهها:
زمان اجرا: O(1)/O(n) ( O(1) – برای درج عناصر در انتهای آرایه، O(n) – برای درج عناصر در ابتدا و به سراسر آرایه
فضای کمکی: O(1)
دسترسی به عناصر آرایه
برای دسترسی به عناصر آرایه، به شماره اندیس مراجعه کنید. از عملگر اندیس گذاری [ ] برای دسترسی به یک عنصر در یک آرایه استفاده کنید. اندیس باید یک عدد صحیح باشد.
کد زیر نحوه استفاده از اندیس گذاری را برای دسترسی به عناصر در آرایهها نشان میدهد.
- عبارت a[0] به عنوان نمونه اولین عنصر آرایه a را به ما میدهد که برابر با 1 است. همچنین، عبارت a[3] چهارمین عنصر آرایه a را به ما میدهد که برابر با 4 است.
- به همین ترتیب، عبارت b[1] دومین عنصر آرایه b را به دست میدهد که برابر با 3.2 است، و عبارت b[2] سومین عنصر آرایه b را میدهد که برابر با 3.3 است.
import array as arr a = arr.array('i', [1, 2, 3, 4, 5, 6]) print("Access element is: ", a[0]) print("Access element is: ", a[3]) b = arr.array('d', [2.5, 3.2, 3.3]) print("Access element is: ", b[1]) print("Access element is: ", b[2])
خروجی:
Access element is: 1 Access element is: 4 Access element is: 3.2 Access element is: 3.3
پیچیدگیها برای دسترسی به عناصر آرایه:
زمان اجرا: O(1)
فضای کمکی: O(1)
حذف عناصر از آرایه
میتوانید عناصر را از آرایه با استفاده از تابع داخلی ()remove حذف کنید، اما اگر عنصر در مجموعه وجود نداشته باشد، یک خطا به وجود میآید. متد remove فقط یک عنصر را در هر زمان حذف میکند، برای حذف یک محدوده از عناصر، از یک iterator استفاده میشود.
تابع ()pop نیز برای حذف و بازگرداندن یک عنصر از آرایه میتواند استفاده شود، اما به طور پیشفرض فقط آخرین عنصر آرایه را حذف میکند. برای حذف عنصری مشخص از یک موقعیت خاص در آرایه، شاخص عنصر به عنوان آرگومان به متد pop داده میشود.
توجه – متد remove در لیست فقط اولین رخداد عنصر جستجو شده را حذف میکند.
کد زیر نشان میدهد که چگونه در پایتون یک آرایه ایجاد کرده، عناصر آن را چاپ کرده، عناصر آن را حذف کرده و همچنین نحوه دسترسی به آن را نشان میدهد.
- ابتدا ماژول آرایه برای کار با آرایهها وارد برنامه میشود. یک آرایه از اعداد صحیح ساخته میشود و آرایه اصلی چاپ میشود.
- سپس کد زیر یک عنصر از آرایه را حذف و آرایه اصلاحشده را چاپ میکند. در نهایت، این بار با دستور remove عمیلیات حذف کردن انجام شده و آرایه باقیمانده دوباره چاپ میشود.
import array arr = array.array('i', [1, 2, 3, 1, 5]) print("The new created array is : ", end="") for i in range(0, 5): print(arr[i], end=" ") print("\r") print("The popped element is : ", end="") print(arr.pop(2)) print("The array after popping is : ", end="") for i in range(0, 4): print(arr[i], end=" ") print("\r") arr.remove(1) print("The array after removing is : ", end="") for i in range(0, 3): print(arr[i], end=" ")
خروجی:
The new created array is : 1 2 3 1 5 The popped element is : 3 The array after popping is : 1 2 1 5 The array after removing is : 2 1 5
پیچیدگیها برای حذف عناصر از آرایه:
زمان اجرا: O(1)/O(n)
( O(1) برای حذف عناصر در انتهای آرایه، O(n) برای حذف عناصر در ابتدا و در سراسر آرایه)
فضای کمکی: O(1)
برش آرایه
در آرایه پایتون، چندین روش برای چاپ کل آرایه با تمام عناصر وجود دارد، اما برای چاپ یک محدوده خاص از عناصر آرایه از عملگر برش (Slice) استفاده میشود.
عملگر برش با استفاده از دو نقطه (:) بر روی آرایه انجام میشود.
- برای چاپ عناصر از ابتدا تا یک محدوده از [Index:] استفاده کنید.
- برای چاپ عناصر از انتها از [Index-:] استفاده کنید
- برای چاپ عناصر از یک اندیس خاص تا انتها از [:Index] استفاده کنید
- برای چاپ عناصر در یک محدوده خاص از [Start Index:End Index] استفاده کنید
- برای چاپ کل لیست با استفاده از عملگر برش از [:] استفاده کنید
- علاوه بر این، برای چاپ کل آرایه به ترتیب معکوس از [1-::] استفاده کنید.
کد زیر از برش (slicing) برای استخراج عناصر یا زیرآرایهها از یک آرایه استفاده میکند. در ابتدا یک آرایه از لیست موجود در برنامه ایجاد میکند. سپس آرایه را برش میزند تا عناصر از اندیس 3 تا 8، از اندیس 5 تا انتها، و کل آرایه استخراج شوند. سپس آرایههای برشخورده چاپ میشوند تا عملیات برش را نمایش دهند.
import array as arr l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] a = arr.array('i', l) print("Initial Array: ") for i in (a): print(i, end=" ") Sliced_array = a[3:8] print("\nSlicing elements in a range 3-8: ") print(Sliced_array) Sliced_array = a[5:] print("\nElements sliced from 5th " "element till the end: ") print(Sliced_array) Sliced_array = a[:] print("\nPrinting all elements using slice operation: ") print(Sliced_array)
خروجی:
Initial Array: 1 2 3 4 5 6 7 8 9 10 Slicing elements in a range 3-8: array('i', [4, 5, 6, 7, 8]) Elements sliced from 5th element till the end: array('i', [6, 7, 8, 9, 10]) Printing all elements using slice operation: array('i', [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
جستجوی عنصر در یک آرایه
برای جستجوی یک عنصر در آرایه از تابع ()index پایتون استفاده میشود. این تابع اندیس اولین رخداد مقدار مشخص شده در آرگومانها را برمیگرداند.
مثال: این کد نشان میدهد چگونه یک آرایه در پایتون ایجاد شده، عناصر آن را چاپ کرده و اندیسهای عناصر خاص را پیدا میکند.
ابتدا ماژول آرایه را وارد میکند، یک آرایه از اعداد صحیح ایجاد میکند، آرایه را با استفاده از یک حلقه for چاپ میکند و سپس از متد index برای یافتن اندیس اولین رخداد اعداد 2 و 1 استفاده میکند.
import array arr = array.array('i', [1, 2, 3, 1, 2, 5]) print("The new created array is : ", end="") for i in range(0, 6): print(arr[i], end=" ") print("\r") print("The index of 1st occurrence of 2 is : ", end="") print(arr.index(2)) print("The index of 1st occurrence of 1 is : ", end="") print(arr.index(1))
خروجی:
The new created array is : 1 2 3 1 2 5 The index of 1st occurrence of 2 is : 1 The index of 1st occurrence of 1 is : 0
پیچیدگیها برای جستجوی عناصر در آرایه:
زمان اجرا: O(n)
فضای کمکی: O(1)
بهروزرسانی عناصر در یک آرایه
برای بهروزرسانی یک عنصر در آرایه، به سادگی یک مقدار جدید را به اندیس مورد نظر که میخواهیم بهروزرسانی کنیم، اختصاص میدهیم.
مثال: کد زیر عملکرد بهروزرسانی عناصر در یک آرایه را با استفاده از اندیس گذاری نشان میدهد.
ابتدا ماژول آرایه را وارد میکند، یک آرایه از اعداد صحیح ایجاد میکند، و آرایه اولیه را چاپ میکند. سپس، دو عنصر آرایه را در اندیسهای خاص بهروزرسانی میکند و آرایه بهروزرسانیشده را چاپ میکند. این کد نشان میدهد که چگونه استفاده از اندیس گذاری امکان مدیریت پویای محتوای آرایه را فراهم میکند.
import array arr = array.array('i', [1, 2, 3, 1, 2, 5]) print("Array before updation : ", end="") for i in range(0, 6): print(arr[i], end=" ") print("\r") arr[2] = 6 print("Array after updation : ", end="") for i in range(0, 6): print(arr[i], end=" ") print() arr[4] = 8 print("Array after updation : ", end="") for i in range(0, 6): print(arr[i], end=" ")
خروجی:
Array before updation : 1 2 3 1 2 5 Array after updation : 1 2 6 1 2 5 Array after updation : 1 2 6 1 8 5
پیچیدگیها برای بهروزرسانی عناصر در آرایه:
زمان اجرا: O(n)
فضای کمکی: O(1)
عملیاتهای مختلف روی آرایههای پایتون
شمارش عناصر در یک آرایه
برای شمارش عناصر در یک آرایه، باید از متد ()count استفاده میکنیم.
مثال: این کد نشان میدهد چگونه میتوان تعداد تکرار یک عنصر خاص در یک آرایه را مشخص کرد.
ابتدا ماژول آرایه وارد برنامه میشود، سپس یک آرایه از اعداد صحیح ایجاد میشود، تعداد تکرار عدد 2 با استفاده از متد ()count شمارش میشود و در نهایت نتیجه چاپ میشود.
این قطعه کد به طور موثر توانمندی تحلیل توزیع عناصر در آرایهها را نمایش میدهد.
import array my_array = array.array('i', [1, 2, 3, 4, 2, 5, 2]) count = my_array.count(2) print("Number of occurrences of 2:", count)
خروجی:
Number of occurrences of 2: 3
پیچیدگیها برای شمارش عناصر در یک آرایه:
زمان اجرا: O(n)
فضای کمکی: O(1)
معکوس کردن عناصر در یک آرایه
برای معکوس کردن عناصر یک آرایه، به سادگی از متد reverse استفاده میشود.
مثال: کد ارائهشده نشان میدهد چگونه میتوان از متد reverse برای معکوس کردن ترتیب عناصر در یک آرایه استفاده کرد.
ابتدا ماژول آرایه وارد برنامه میشود، یک آرایه از اعداد صحیح ایجاد میشود، آرایه اصلی چاپ میشود، ترتیب عناصر با استفاده از متد ()reverse معکوس شده و سپس آرایه معکوسشده چاپ میشود.
این مثال به طور موثری نشان میدهد که چگونه میتوان ترتیب عناصر در یک آرایه را تغییر داد.
import array my_array = array.array('i', [1, 2, 3, 4, 5]) print("Original array:", *my_array) my_array.reverse() print("Reversed array:", *my_array)
خروجی:
Original array: 1 2 3 4 5 Reversed array: 5 4 3 2 1
پیچیدگیها برای معکوس کردن عناصر در یک آرایه:
زمان اجرا: O(n)
فضای کمکی: O(1)
گسترش عناصر آرایه
حال به معرفی تابع extend در لیستهای پایتون میپردازیم و سعی داریم این تابع را درک کنیم.
در پایتون، از آرایه برای ذخیره چندین مقدار یا عنصر با نوع داده یکسان در یک متغیر استفاده میشود. تابع extend به سادگی برای اضافه کردن عنصری از نوع iterable به انتهای آرایه مورد استفاده قرار میگیرد. به عبارت دیگر، این متد برای افزودن یک آرایه از مقادیر به انتهای یک آرایه موجود یا داده شده استفاده میشود.
سینتکس متد extend:
list.extend(iterable)
در اینجا، تمام عناصر موجود در iterable به انتهای لیست اضافه میشوند.
مثال 1:
کد ارائهشده قابلیت گسترش (توسعه) یک آرایه برای افزودن عناصر اضافی را نشان میدهد.
ابتدا ماژول آرایه را با یک نام مستعار وارد میکند، یک آرایه از اعداد صحیح ایجاد میکند، آرایه را قبل از گسترش چاپ میکند، سپس با استفاده از متد extend، عناصر یک آرایه دیگر را به آرایه مورد نظر اضافه میکند و در نهایت آرایه گسترده شده چاپ میشود. این مثال به خوبی نشان میدهد که چگونه میتوان به ساختار یک آرایه موجود، عناصر جدیدی اضافه کرد.
import array as arr a = arr.array('i', [1, 2, 3,4,5]) print("The before array extend : ", end =" ") for i in range (0, 5): print (a[i], end =" ") print() a.extend([6,7,8,9,10]) print("\nThe array after extend :",end=" ") for i in range(0,10): print(a[i],end=" ") print()
خروجی:
The before array extend : 1 2 3 4 5 The array after extend : 1 2 3 4 5 6 7 8 9 10
مثال 2:
کد ارائهشده نشان میدهد چگونه میتوان آرایه ها در پایتون را با انواع دادههای مختلف از جمله اعداد صحیح و اعشاری گسترش داد.
این کد از ماژول آرایه استفاده کرده، آرایههایی از هر دو نوع داده ایجاد میکند و سپس از متد extend برای گسترش آنها استفاده میکند. آرایهها قبل و پس از گسترش چاپ میشوند تا تغییرات را نشان دهند.
این مثال به طور موثری قابلیت افزودن عناصر به آرایهها را با انواع مختلف داده نشان میدهد.
import array as arr a=arr.array('i',[1,2,3,4,5,6]) print("The Before extend array is :",end=" ") for i in range(0,6): print(a[i],end=" ") print() a.extend([7,8,9,10,11,12]) print("\nThe After extend array is :",end=" ") for i in range(0,12): print(a[i],end=" ") print() b = arr.array('d', [2.1,2.2,2.3,2.4,2.5,2.6]) print("\nThe before extend array is :",end=" ") for i in range(0,6): print(b[i],end=" ") print() b.extend([2.6,2.7,2.8,2.9]) print("\nThe after extend array is :",end=" ") for i in range(0,10): print(b[i],end=" ") print()
خروجی:
The Before extend array is : 1 2 3 4 5 6 The After extend array is : 1 2 3 4 5 6 7 8 9 10 11 12 The before extend array is : 2.1 2.2 2.3 2.4 2.5 2.6 The after extend array is : 2.1 2.2 2.3 2.4 2.5 2.6 2.6 2.7 2.8 2.9
پیچیدگیها برای گسترش عناصر در یک آرایه:
زمان اجرا: O(1)
فضای کمکی: O(1)