آرایه در پایتون – از انواع تا ساخت و نحوه نوشتن + نمونه کد


پایتون در حال حاضر به یکی از زبانهای برنامهنویسی بسیار محبوب بین توسعهدهندگان مبتدی و حرفهای تبدیل شده است. این زبان در بخشهای گوناگونی نظیر AI، علم داده، تحلیل داده، یادگیری ماشین، توسعه بک اند، ساخت انواع نرمافزارها و وب اپلیکیشنها، بازیسازی و بسیاری از حوزههای دیگر مورد استفاده قرار میگیرد. با توجه به این حجم از کاربردهای پایتون و یادگیری بهنسبت سادهتر آن - در ترتیب یادگیری زبان های برنامه نویسی - در مقابل سایر زبانها، غافلگیرکننده نیست که از زبان جاوا به لحاظ برترین زبان برنامهنویسی پیشی گرفته است. در این مطلب از مجله فرادرس میخواهیم به توضیح یکی از اصلیترین ساختمان دادههای پایتون یعنی آرایه بپردازیم و ضمن توضیح نحوه نوشتن آن، عملیات رایجی روی آرایهها را به همراه کدهای مربوطه تشریح کنیم.
آرایه در پایتون چیست؟
ساختمان داده آرایه در پایتون، هنگامی بهکار میرود که بخواهیم در یک زمان بیش از یک مقدار را ذخیره کنیم. در واقع، یک آرایه میتواند مقادیر متعددی را در یک متغیر تکی نگهداری کند و همچنین به کاهش حجم کلی کدها کمک میکند. استفاده از آرایه، صرفهجویی در زمان را نیز بهدنبال دارد.
بهطور کلی، «آرایهها» (Arrays) در زبانهای برنامهنویسی، ساختار داده یا «ساختمان دادهای» (Data Structure) هستند که به ما امکان میدهند تا مقادیر متعددی با نوع داده یکسان را ذخیره کنیم. Array در برنامهنویسی را میتوانیم بهصورت ظرفی تصور کنیم که تعداد ثابتی از اشیا هم نوع را نگه میدارد.
آرایهها در پایتون برای نظم بخشیدن و سازماندهی اطلاعات بسیار مفید هستند، بهویژه هنگامی که با تعداد زیادی متغیر همنوع سر و کار داریم.

ماژول array در پایتون
آرایهها در پایتون بهوسیله ماژولی بهنامarray مدیریت میشوند. کاربر میتواند «لیستها» (Lists) - ساختمان دادهای در پایتون - را به عنوان آرایه در نظر بگیرد. با این وجود نمیتواند نوع عناصر ذخیره شده در لیست را محدود کند. به بیان دیگر، اگر با استفاده از ماژول array آرایهای را ایجاد کنیم. تمامی عناصر این آرایه میبایست از یک نوع باشند. لیست و آرایه در پایتون دارای تفاوتهای خاصی هستند.
آرایه، مجموعهای از «موارد» (آیتمها | Items) هستند که در مکانهای مجاور در حافظه ذخیره میشوند. هدف در اینجا ذخیره آیتمهای متعددی است که دارای نوع داده مشابهی هستند.
تصویری که در ادامه آوردهایم ساختار کلی آرایهای به طول ۱۰ را نشان میدهد.

ایندکس - یا شماره - نخستین خانه آرایه برابر با صفر است.
نحوه ایجاد آرایه در پایتون
برای ایجاد یک آرایه در پایتون میبایست ابتدا ماژولarray را به شکل زیر ایمپورت کنیم.
import array as arr
عبارتarr نام مستعاری است که به این ماژول هنگام ایمپورت آن نسبت دادهایم و در ادامه، بهجای آوردن نام کامل این ماژول بهکار میبریم.
کدهای ایجاد یک آرایه در پایتون
کدهایی که در ادامه آوردهایم، ۲ آرایه، یکی از نوع اعداد صحیح و دیگری از نوع اعداد اعشاری میسازد.
1import array as arr
2a = arr.array('i', [1, 2, 3])
3print("The new created array is : ", end=" ")
4for i in range(0, 3):
5 print(a[i], end=" ")
6print()
7b = arr.array('d', [2.5, 3.2, 3.3])
8print("\nThe new created array is : ", end=" ")
9for i in range(0, 3):
10 print(b[i], end=" ")
کدهای بالا را در ادامه توضیح دادهایم.
خط شماره ۲: با استفاده از کلاس array از ماژول ایمپورت شده arr، آرایهای بهنامa میسازیم که عناصر لیست[1, 2, 3] را به صورت عدد صحیح با نماد 'i' نگهداری میکند.
خطوط شماره ۲ تا ۵: آرایه ساختهشده a را چاپ میکند که بهصورت زیر است.
The new created array is : 1 2 3
خط شماره ۷: آرایه دیگری بهنامb میسازیم. عناصر این آرایه عناصر لیست ورودی [2.5, 3.2, 3.3] هستند که با نوع اعشاری یا 'd' ذخیره میشوند.
خطوط شماره ۸ تا ۱۰: آرایه ساختهشدهb را چاپ میکند که بهصورت زیر است.
The new created array is : 2.5 3.2 3.3
پیچیدگی ایجاد آرایه
پیچیدگی ایجاد آرایه بهصورت زیر است.
پیچیدگی زمانی | پیچیدگی فضایی |
O(1) | O(n) |
نوع داده های آرایه در پایتون
در ادامه، برخی از «انواع دادهای» (Data Types) را آوردهایم که در ایجاد آرایههایی با انواع دادهای گوناگون مفید هستند.
کد نوع | نوع | نوع پایتون | حداقل اندازه به بایت |
'b' | signed char | int | 1 |
'B' | unsigned char | int | 1 |
'u' | Py_UNICODE | unicode character | 2 |
'h' | signed short | int | 2 |
'H' | unsigned short | int | 2 |
'i' | signed int | int | 2 |
'I' | unsigned int | int | 2 |
'l' | signed long | int | 4 |
'L' | unsigned long | int | 4 |
'q' | signed long long | int | 8 |
'Q' | unsigned long long | int | 8 |
'f' | float | float | 4 |
'd' | double | float | 8 |
افزودن عنصر جدید به آرایه
به منظور افزودن عناصر به آرایه میتوانیم از تابع داخلیinsert() کمک بگیریم. با استفاده از این تابع میتوانیم یک یا چندین عنصر دادهای را در آرایه موجود درج کنیم. با توجه به نیاز، عنصر جدید میتواند به ابتدا، انتها یا به ایندکس مورد نظر از آرایه افزوده شود. تابع append در پایتون نیز برای درج مقدار اشاره شده در آرگومانهایش در انتهای آرایه بهکار میرود.

کدهای افزودن عنصر جدید به آرایه
کدهایی که در ادامه آوردهایم پیادهسازی موارد گفته شده را نشان میدهند.
1import array as arr
2a = arr.array('i', [1, 2, 3])
3print("Array before insertion : ", end=" ")
4for i in range(0, 3):
5 print(a[i], end=" ")
6print()
7a.insert(1, 4)
8print("Array after insertion : ", end=" ")
9for i in (a):
10 print(i, end=" ")
11print()
12b = arr.array('d', [2.5, 3.2, 3.3])
13print("Array before insertion : ", end=" ")
14for i in range(0, 3):
15 print(b[i], end=" ")
16print()
17b.append(4.4)
18print("Array after insertion : ", end=" ")
19for i in (b):
20 print(i, end=" ")
21print()
- خط شماره ۷: در این خط با استفاده از تابعinsert()، عدد صحیح4 در ایندکس1از آرایه درج میشود.
- خط شماره ۱۷: در این خط با استفاده از تابعappend، عدد اعشاری4.4 به آرایه اضافه میشود.
خروجی کدهای گفته شده به صورت زیر خواهد بود.
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(1) است.
- پیچیدگی زمانی درج عناصر در ابتدای آرایه و به آرایه پُر نیز برابر با O(n) است.
دسترسی به عناصر آرایه
برای دسترسی به آیتمهای موجود در آرایه میبایست به شماره ایندکس مورد نظر ارجاع دهیم و برای این کار از عملگر ایندکس یا [ ] استفاده میکنیم. توجه داشته باشیم که شماره ایندکس میبایست عددی صحیح باشد.
کدهای دسترسی به عناصر آرایه
فرض کنید آرایهای بهنام a بهشکل زیر - به لحاظ مقادیر و نوع داده عدد صحیح و تعداد عناصر - داریم.
[1, 2, 3, 4, 5, 6]
همچنین آرایهای دیگر بهنام b بهشکل زیر - به لحاظ مقادیر و نوع داده عدد اعشاری و تعداد عناصر - نیز تعریف کردهایم.
[2.5, 3.2, 3.3]
کدهایی که در ادامه آوردهایم بهکاربردن ایندکس برای دسترسی به عناصر این آرایهها را نشان میدهد. عبارتa[0] به عنصر اول آرایهa دسترسی پیدا میکند که شامل عدد1 است. همچنین، عبارتa[3] عنصر چهارم از آرایه را بر میگرداند که مقداری برابر با4 دارد.
به همین ترتیب، عبارتb[1] به عنصر دوم آرایهb دسترسی دارد که شامل عنصری با مقدار 3.2 است .همچنین، عبارت b[2] عنصر سوم آرایه را بر میگرداند که دارای مقداری برابر با3.3 است.
1import array as arr
2a = arr.array('i', [1, 2, 3, 4, 5, 6])
3print("Access element is: ", a[0])
4print("Access element is: ", a[3])
5b = arr.array('d', [2.5, 3.2, 3.3])
6print("Access element is: ", b[1])
7print("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() استفاده کنیم. اما توجه داشته باشید که این روش، در صورت عدم وجود عنصری در مجموعه منجر به بروز خطا میشود. متد remove() در هر لحظه تنها یک عنصر را حذف میکند و برای حذف محدودهای از عناصر از Iterator-های پایتون استفاده میکنیم.
تابع pop()
دستور pop در پایتون را هم میتوانیم برای حذف عنصری از آرایه و برگرداندن مقدار آن بهکار ببریم. این تابع در حالت عادی و پیشفرض تنها عنصر آخر آرایه را حذف میکند و اگر بخواهیم عنصری در مکان مشخص از آرایه را حذف کنیم میبایست ایندکس آن را بهعنوان آرگومان در متد pop()ارسال کنیم.

کدهای حذف عنصر از آرایه
کدهایی که در زیر آوردهایم عملیات ایجاد، چاپ و حذف عناصر از آرایه و همچنین دسترسی به این آیتمها را در زبان برنامهنویس پایتون نشان میدهد.
1import array
2arr = array.array('i', [1, 2, 3, 1, 5])
3print("The new created array is : ", end="")
4for i in range(0, 5):
5 print(arr[i], end=" ")
6
7print("\r")
8print("The popped element is : ", end="")
9print(arr.pop(2))
10print("The array after popping is : ", end="")
11for i in range(0, 4):
12 print(arr[i], end=" ")
13
14print("\r")
15arr.remove(1)
16print("The array after removing is : ", end="")
17for i in range(0, 3):
18 print(arr[i], end=" ")
خطوط ۱ تا ۵: ماژول آرایه را ایمپورت - وارد برنامه - میکند تا از این طریق بتوانیم با آرایه در پایتون کار کنیم. آرایهای جدید بهنامarr با نوع عدد صحیح و شامل ۵ مقدار، ساخته و آن را با حلقه for چاپ میکند.
خطوط ۷ تا ۱۲: در این قسمت عنصر موجود در ایندکس ۲ - یا همان خانه سوم با مقدار3 - را با استفاده از متدpop() از آرایه حذف میکند. از آنجاییکه این متد مقدار حذف شده را بهطور همزمان برمیگرداند، در اینجا مقدار آن را چاپ کرده است. در نهایت نیز لیست بهروز شده را چاپ میکند.
خطوط ۱۴ تا ۱۸: در این خطوط با استفاده از متدremove()، مقدار 1 را پیدا کرده و اولین رخداد آن - اگر چند مورد از این عنصر وجود داشته باشد فقط اولین مورد یافت شده - را حذف میکند.
خروجی این کدها بهصورت زیر خواهد بود.
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(1) است.
- پیچیدگی زمانی حذف عناصر از ابتدای آرایه یا در آرایه پُر نیز برابر با O(n) است.
برش آرایه در پایتون
راههای گوناگونی در پایتون وجود دارد که بهوسیله آن میتوانیم کل آرایه پایتونی را به همراه تمامی عناصر آن چاپ کنیم اما برای چاپ محدوده خاصی از آرایه میبایست از عملیات «برش» (Slice) کمک بگیریم. برای بهکارگیری این عملیات روی یک آرایه از علامت «۲ نقطه» یا همان: استفاده میکنیم.
در ادامه این مطلب از مجله فرادرس، روش استفاده از آن را بیان کردهایم.
- برای چاپ عناصر آرایه از ابتدای آن تا یک محدوده مشخص [:Index] را بهکار میبریم. Index همان شماره خانه مورد نظر است.
- به منظور چاپ عناصر آرایه از انتهای آن از[:-Index] استفاده میکنیم.
- برای چاپ عناصر آرایه از ایندکسی مشخص تا انتهای آن[Index:] را بهکار میبریم. Index همان شماره خانه مورد نظر است.
- برای چاپ محدودهای مشخص از عناصر آرایه از [Start Index:End Index] بهکار میبریم. Index همان شماره خانه مورد نظر است.
- برای چاپ کل لیست با استفاده از عملیات برش از [:] استفاده میکنیم. در صورتی که بخواهیم کل آرایه را با ترتیب عکس چاپ کنیم نیز از [::-1] استفاده میکنیم.

کدهای حذف عنصر از آرایه
کدهایی که در زیر آوردهایم از برش آرایه به منظور بیرون کشبدن عناصر - یا زیرآرایهها - از یک آرایه استفاده میکند.
1import array as arr
2l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
3
4a = arr.array('i', l)
5print("Initial Array: ")
6for i in (a):
7 print(i, end=" ")
8Sliced_array = a[3:8]
9print("\nSlicing elements in a range 3-8: ")
10print(Sliced_array)
11Sliced_array = a[5:]
12print("\nElements sliced from 5th "
13 "element till the end: ")
14print(Sliced_array)
15Sliced_array = a[:]
16print("\nPrinting all elements using slice operation: ")
17print(Sliced_array)
- خط ۸: با استفاده از عملیات برش، آرایه ساخته شده را برش زده و عناصر موجود در محدوده ایندکسهای ۳ تا ۸ - بهجز خود ۸ - را بیرون میکشد و در Sliced_array قرار میدهد.
- خط ۱۱: دوباره آرایه اصلی را از ایندکس ۵ تا انتهای آن برش زده و در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...
جست و جوی عنصر در آرایه
اگر بخواهیم عنصری را درون یک آرایه جست و جو کنیم از تابع Index در پایتون استفاده میکنیم. این تابع ایندکس اولین رخداد مقداری را بر میگرداند که بهعنوان آرگومان به تابع دادیم.
کدهای جست و جوی عنصر در آرایه
کدهای مربوطه را در ادامه آوردهایم.
1import array
2arr = array.array('i', [1, 2, 3, 1, 2, 5])
3print("The new created array is : ", end="")
4for i in range(0, 6):
5 print(arr[i], end=" ")
6
7print("\r")
8print("The index of 1st occurrence of 2 is : ", end="")
9print(arr.index(2))
10print("The index of 1st occurrence of 1 is : ", end="")
11print(arr.index(1))
خطوط ۹ و ۱۱: در این ۲ خط از متدindex() به منظور یافتن ایندکس مقدار ۲ و پس از آن، یافتن ایندکس مقدار ۱ استفاده شده است. با اینکه این مقادیر در مکانهای مختلف آرایه تکرار شدهاند اما همانطور که پیشتر اشاره کردیم، تنها مکان اولین وقوع آنها به عنوان خروجی برگردانده میشود.
خروجی کدهای گفته شده بهصورت زیر است.
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) |
ویرایش عناصر آرایه
برای بهروزرسانی یک عنصر درون آرایه پایتون تنها کافی است تا مقدار جدید را به ایندکس مورد نظری - که قصد بهروزرسانی آن را داریم - تخصیص بدهیم.
کدهای ویرایش عناصر آرایه
کدهایی که در ادامه آوردهایم. کارکرد اصلاح عناصر موجود در آرایه با ایندکسها را بهخوبی نشان میدهد.
1import array
2arr = array.array('i', [1, 2, 3, 1, 2, 5])
3print("Array before updation : ", end="")
4for i in range(0, 6):
5 print(arr[i], end=" ")
6
7print("\r")
8arr[2] = 6
9print("Array after updation : ", end="")
10for i in range(0, 6):
11 print(arr[i], end=" ")
12print()
13arr[4] = 8
14print("Array after updation : ", end="")
15for i in range(0, 6):
16 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) |
سوالات متداول
در این بخش، برخی از پرسشهای متداول در رابطه با آرایه در پایتون را پاسخ میدهیم.
مزیت استفاده از آرایه در پایتون چیست؟
آرایه در پایتون با هدف ذخیره بیش از یک مقدار در یک زمان مورد استفاده قرار میگیرد. این ساختمان داده میتواند مقادیر متعددی را در متغیری واحد نگه دارد. همچنین به کاهش حجم کلی کدها کمک میکند.
آرایه در پایتون چه نوع مقادیری را میتواند نگه دارد؟
ساختار داده آرایه در پایتون میتواند انواع دادههای گوناگونی نظیر مقادیر صحیح، مقادیر اعشاری و غیره را نگه دارد.
ایجاد آرایه در پایتون چگونه است؟
برای ایجاد ساختمان داده آرایه در پایتون از ماژول array استفاده میکنیم.
افزودن عنصر جدید به آرایه در پایتون چگونه است؟
برای افزودن عنصر جدید به آرایه در پایتون میتوانیم از متدهای insert() و append() استفاده کنیم.
نحوه حذف عنصر از آرایه موجود در پایتون چگونه است؟
به منظور حذف عنصر از آرایه موجود در پایتون متدهای remove() و pop() را بهکار میبریم.
برش آرایه در پایتون چگونه است؟
برش یا Slicing آرایه پایتون به منظور بیرون کشیدن بخشی از آرایه انجام میشود و برای این کار از علامت « : » هنگام ایندکس دادن استفاده میکنیم.
جست و جوی یک عنصر در آرایه چگونه است؟
برای این کار از متد داخلی پایتون بهنام index() استفاده میکنیم. این متد ایندکس اولین رخداد مقدار مورد نظر - مشخص شده در آرگومان - را بر میگرداند.
آیا ویرایش عناصر آرایه در پایتون امکان پذیر است؟
بله برای این منظور کافی است تا مقدار جدید را به ایندکس مورد نظر نسبت دهیم.
جمعبندی
در این مطلب از مجله فرادرس با یکی از ساختمان دادههای مهم پایتون یعنی آرایهها آشنا شدیم. برای ایجاد آرایهها در پایتون از ماژول array استفاده کردیم و نحوه کار با آن را بهطور کامل و به زبانی ساده توضیح دادیم.
در ادامه مطلب، روشهای افزودن عنصری جدید به آرایه، حذف آیتمهای موجود، اصلاح و بهروزرسانی آیتمهای مورد نظر را نیز مرور کردیم. برای اینکه بتوانیم قسمتی از آرایه موجود را در قالب زیرآرایه بیرون بکشیم به آموزش بهکارگیری ایندکسها نیز پرداختیم. پس از آن به سراغ نحوه جست و جوی یک آیتم در آرایه رفتیم و در نهایت پرسشهای رایج در رابطه با این موضوع را با هم مرور کردیم.