آرایه دو بعدی در پایتون – به زبان ساده با مثال و کد
آرایه دو بعدی در پایتون مانند ساختمان چند طبقهای است که به کامپیوتر برای ذخیره سازی اطلاعات در دو طبقه یا دو بُعد مختلف کمک میکند. این نوع از آرایهها در پایتون، از ساختارهای تودرتو تشکیل میشوند. یعنی اینکه مجموعهای از آرایهها هستند که درون آرایه دیگری قرار گرفتهاند. آرایههای دو بعدی به طور گسترده برای نمایش داده به حالت جدول یا شکل دو بعدی به کار برده میشوند. این ساختارهای ذخیره داده، ابزارهای بسیار مفیدی را برای انجام کارهای پیچیدهای مانند مسائل مربوط به حوزه تحلیل داده و محاسبات ماتریسها فراهم میکنند. تسلط به کار بر روی آرایههای دو بعدی در پایتون یکی از مهارتهای برجسته برنامهنویسان حرفهای است.
در این مطلب از مجله فرادرس درباره آرایه دو بعدی در پایتون صحبت کردهایم. از تعریف آرایه دو بعدی شروع کرده و بعد از بررسی انواع عملیات رایج بر روی آرایهها مانند دسترسی به عناصر درون آرایه، پیمایش بر روی آنها، افزودن مقدار به آرایه، بهروزرسانی عناصر و حذف داده در نهایت روش آدرسیابی حافظه در آرایه دو بعدی در پایتون را نیز شرح دادهایم.
آرایه دو بعدی در پایتون چیست؟
آرایه دو بعدی در پایتون، ساختار داده دو بعدی است که در حافظه کامپیوتر به صورت خطی ذخیره میشود. به این معنا که دادهها در دو بعد مختلف ذخیره شدهاند، این ساختار ذخیره داده، مانند نگهداری دادهها به شکل جدول کار میکند. یعنی دادهها در سطر و ستونهای متقاطع هم قرار گرفتهاند. به همین دلیل از این ساختار برای نمایش ماتریسها نیز میتوان استفاده کرد. از طرف دیگر ساختارهای داده خطی - یک بعدی - هم دادهها را به صورت خطی در حافظه کامپیوتر ذخیره میکنند. اما در این ساختارها هر عنصر به عناصر قبل و بعد از خودش به صورت مستقیم متصل است.
لازم به ذکر است که روش نگهداری آرایههای دو بعدی نیز مانند ذخیره ساختارهای خطی در حافظه است. اما تفاوتهای کوچک و مهمی با هم دارند. آرایههای دو بعدی را به شکل جدولی نمایش میدهند، اما در واقع به صورت خطی در حافظه ذخیره شدهاند. به این معنا که اگر عنصری در آدرس حافظه فعلی حضور داشته باشد، عنصر بعدی در خانه حافظه بعدی قرار میگیرد. این نوع از ذخیرهسازی باعث میشود که دو ویژگی مهم زیر به وجود بیایند.
- آرایهها قابلیت دسترسی تصادفی داشته باشند.
- برنامهنویسان میتوانند به هر عنصر در آرایه به صورت مستقل دسترسی داشته باشند.
در آرایههای دو بعدی چندین آرایه مختلف به عنوان عناصر آرایه بزرگتر - به اصطلاح آرایه بیرونی - ذخیره میشوند. هر عنصری در آرایه دو بعدی توسط دو ایندکس مجزا از هم - سطر و ستون -نمایش داده میشود. آرایههای دو بعدی نیز در پایتون، مانند بقیه ساختارهای ذخیره داده، «Zero-Indexed» هستند. یعنی اینکه ایندکسهای شمارش آرایه، بهجای عدد یک از صفر شروع میشوند. بنابراین در تمام آرایههای پایتون ایندکس اولین عنصر برابر با صفر است.
هرجایی که نیاز به نمایش ماتریس داشته باشیم از آرایههای دو بعدی استفاده میکنیم. آرایههای دو بعدی را با n ردیف و m ستون میسازند که نمایانگر ماتریس mxn است.
یکی دیگر از استفادههای آرایههای دو بعدی برای نمایش جدولی دادهها است. همچنین از آرایهها دو بعدی برای نشاندادن شبکههای توری شکل در زمان اجرای عملیات گرافیکی نیز استفاده میکنند. زیرا خود صفحه نمایش هم به عنوان شبکهای از پیکسلها در نظر گرفته میشود.
سینتکس آرایه دو بعدی در پایتون
قبل از شروع به نمایش مثالهای مختلف درباره عملیات رایج بر روی آرایههای دو بعدی باید با روش پیادهسازی این آرایهها آشنا شویم. به همین دلیل ابتدا سینتکس مربوط به تعریف آرایه دو بعدی را در کادر زیر نشان دادهایم.
عبارتهای نوشته شده در سینتکس بالا را در فهرست زیر توضیح دادهایم.
- array_name: این عبارت نشاندهنده نام آرایه است.
- n_rows: پارامتر n_rowsتعداد ردیفهای آرایه را مشخص میکند.
- n_columns: پارامتر n_columnsنیز تعداد ستونهای آرایه است.
این سینتکس فقط آرایه را ایجاد میکند. به این معنا که برای آرایهای با n_rowsردیف و n_columnsستون در حافظه، فضایی اختصاص داده میشود. اما مقادیر آرایه بعدا به آن تخصیص داده خواهند شد.
سینتکس دیگری هم برای تشکیل آرایه دو بعدی وجود دارد که در آن همزمان با تعریف آرایه، عناصری هم به آرایه اختصاص داده میشوند. این سینتکس هم با یک خط کد نوشته میشود.
عبارتهای نوشته شده در سینتکس بالا را در فهرست زیر توضیح دادهایم.
- array_name: این عبارت نشاندهنده نام آرایه است.
- r1c1، r1c1 و غیره: این پارامترها عناصر تشکیل دهنده آرایه را نشان میدهند.
پارامتر r1c1 نمایانگر عنصری است که در ردیف اول از سطر اول قرار دارد. آرایههای دو بعدی آرایهای هستند که شامل آرایههای دیگر میشوند.
آموزش پایتون با کمک فیلم های فرادرس
در بین زبانهای برنامهنویسی مختلف، پایتون یکی از بهترین گزینهها برای توسعه نرمافزارهای پیچیده است. زبان پایتون به دلیل نزدیکی سینتکس آن به زبان انسان، فرایند یادگیری و استفاده بسیار سادهای هم دارد. بنابراین، آموزش مهارتهای برنامهنویسی پایتون یکی از بهترین انتخابها برای اشخاص علاقهمند به شغلهای برنامهنویسی است. در ضمن، یادگیری زبان پایتون با افزایش مهارت، به مرور جذابتر و کاربردیتر نیز میشود. از بین روشهای گوناگون برای آموزش حرفهای این زبان، استفاده از فیلمهای آموزشی یکی از بهترین روشها است.
وبسایت فرادرس به شکل تخصصی به تولید فیلمهای آموزشی میپردازد. زبان پایتون هم یکی از گزینههای بسیار مهم برای تولید فیلمهای آموزشی در فرادرس است. برای آموزش زبان پایتون در حد ابتدایی میتوانید، فیلم آموزش رایگان پایتون، برنامه نویسی سریع و آسان در ۱۴۰ دقیقه را از فرادرس مشاهده کنید.
در پایین فیلمهای آموزشی دیگری را معرفی کردهایم که برای آموزش سطوح پیشرفتهتر برنامهنویسی مفید هستند.
- فیلم آموزش برنامه نویسی پایتون پیشرفته درباره ترفندهای Python در فرادرس
- فیلم آموزش برنامه نویسی سوکت با پایتون Socket Programming در فرادرس
- فیلم آموزش رایگان تبدیل متن به گفتار در پایتون Python با کتابخانه pyttsx3 در فرادرس
- فیلم آموزش پیاده سازی سیستم تشخیص پلاک ماشین با پایتون به صورت گامبهگام و عملی در فرادرس
- فیلم آموزش کتابخانه های NumPy و Matplotlib در پایتون از فرادرس
دسترسی به مقادیر آرایه های دو بعدی در پایتون
مقادیر یا عناصر درون آرایه های دو بعدی در پایتون به شکل مستقیم قابل دسترسیاند. برای دسترسی به هر عنصر باید به صورت مستقیم از ایندکسهای سطر و ستون آن عنصر استفاده کرد. سینتکس مورد استفاده برای دسترسی مستقیم به عناصر آرایه دو بعدی در کد زیر، نمایش داده شدهاند.
عبارتهای نوشته شده در سینتکس بالا را در فهرست زیر توضیح دادهایم.
- array_name: این عبارت نشاندهنده نام آرایه است.
- row_ind: این پارامتر، ایندکس ردیف مربوط به عنصر را در آرایه نشان میدهد.
- col_ind: این پارامتر هم ایندکس ستون مربوط به عنصر در آرایه را نشان میدهد.
اگر در زمان کار با آرایههای دو بعدی فقط از یک ایندکس استفاده کنیم، این ایندکس به عنوان ایندکس ردیف در نظر گرفته خواهد شد و کل ردیف مورد نظر برگشت داده یا فراخوانی میشود. سینتکس فراخوانی هر ردیفی از آرایه دو بعدی به شکل زیر است.
عبارتهای نوشته شده در سینتکس بالا را در فهرست زیر توضیح دادهایم.
- array_name: این عبارت نشاندهنده نام آرایه است.
- row_ind : این پارامتر شماره ایندکس ردیفی را نشان میدهد، که فراخوانی شده.
اگر از قبل، آرایه دو بعدی را تعریف کرده باشیم و در سینتکس فراخوانی ردیف - سینتکس بالا - شماره ردیفی را قرار دهیم که از تعداد ردیفهای آرایه بیشتر است، پایتون خطای index out of range را برمیگرداند. چنین ایندکسهایی به عنوان خارج از محدوده شناخته میشوند.
مثال هایی از دسترسی به عناصر در آرایه
در این بخش از مطلب، دو مثال مختلف زیر را درباره روش دسترسی به عناصر آرایه دو بعدی نمایش دادهایم.
- دسترسی به عنصر مجزا
- دسترسی به آرایه درونی
در ادامه مثالهای بالا را همراه با کدهای مرتبط، توضیح دادهایم.
دسترسی به عنصر مجزا
در این مثال، ابتدا آرایهای را با نام arr با استفاده از مقادیر داده شده، مقداردهی کردهایم. سپس سعی میکنیم که به عنصر مجزایی در ستون اول و ردیف دوم آرایه arr دست پیدا کنیم. از آنجا که ایندکس در آرایههای پایتون از صفر شروع میشود، از مقادیر 1 و 0 برای دسترسی به عنصر مورد نظر استفاده کردهایم.
کد مربوط به تعریف این آرایه با مقادیر دلخواه و دسترسی به عنصر آن را در کادر زیر نوشتهایم.
بعد از اجرای کد بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
Element at [1][0]= 4
دسترسی به آرایه درونی
در این مثال، فقط ایندکس مربوط به ردیف را ارسال میکنیم. به این معنا که برای دسترسی به ردیف سوم در آرایه دو بعدی arr فقط باید عدد 2 ارسال شود. در این ایندکس، آرایه دیگری وجود دارد. بنابراین، تمام آرایه موجود در ردیف سوم به خروجی برنامه فرستاده میشود.
بعد از اجرای کد بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
Element at [2]= [7, 8, 9]
پیمایش مقادیر آرایه دو بعدی
پیمایش مقادیر در آرایه به معنای این است که به صورت متوالی به هر عنصر در درون ساختار آرایه دو بعدی دسترسی پیدا کنیم. برای پیمایش آرایه دو بعدی میتوان از حلقه for در پایتون استفاده کرد.
در ابتدا بر روی آرایه بیرونی پیمایش میکنیم. از آنجا که هر عنصری از آرایه بیرونی خود آرایهای مستقل است، برای دستیابی به عناصر درون آرایه داخلی باید از حلقه دوم به صورت تودرتو استفاده کنیم.
همینطور که در تصویر بالا مشاهده میکنید، نمادهای فلش به صورت متوالی علامتگذاری شدهاند. اولین ردیف به صورت افقی پیمایش شده است. سپس به سمت دومین ردیف از آرایهها به پایین آمدهایم. آن را پیمایش کرده و در نهایت هم یکبار دیگر به پایین آمده و آخرین ردیف را پیمایش میکنیم.
مثالی از پیمایش آرایه دو بعدی
در مثال زیر، آرایهای با نام arr را با استفاده از دو حلقه for به صورت تودرتو پیمایش میکنیم. حلقه اول برای پیمایش آرایه بیرونی استفاده میشود. در هر مرحله از چرخش این حلقه ردیفی از آرایه به بیرون برمیگردد. حلقه دوم برای پیمایش آرایه درونی به کار برده میشود. در واقع عناصر درون آرایهای که توسط حلقه اول استخراج شده توسط حلقه دوم پیمایش میشوند.
بعد از اجرای کد بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
1 2 3 4 5 6 7 8 9
افزودن مقدار به آرایه دو بعدی
اضافه کردن مقدار به آرایه دو بعدی به معنای این است که عنصر جدیدی را در جایگاه ایندکس مشخص شده در آرایه اضاف کرده و سپس تمام عناصر باقیمانده را به ترتیب جابهجا کنیم. درج مقدار جدید به آرایه باعث میشود که تمام مقادیر بعد از آن به اندازه یک واحد به سمت جلو جابهجا شوند.
با دو روش مختلف میتوان به آرایه دو بعدی در پایتون، مقدار اضافه کرد.
- اضافه کردن عنصر جدید به آرایه بیرونی
- اضافه کردن عنصر جدید به آرایه درونی
آرایه یکی از زیر مجموعههای ساختمان داده است. از آنجا که آرایه با رویکرد ساختمان داده توسعه یافته، تقریبا در تمام زبانهای برنامهنویسی با سینتکسهای متفاوت وجود دارد. در صورت نیاز به کمک برای آموزش آرایه به شکل کلی، میتوانید فیلم آموزش رایگان آرایه در ساختمان داده به زبان ساده همراه با مثالهای کاربردی را از فرادرس مشاهده کنید. لینک مربوط به این فیلم را در پایین نیز قرار دادهایم.
در ادامه این بخش هر دو روش بالا را به صورت کامل توضیح دادهایم.
اضافه کردن عنصر جدید به آرایه بیرونی
باید بخاطر داشته باشیم که آرایه دو بعدی در پایتون، آرایهای است از آرایههای دیگر. بنابراین میتوانیم آرایه جدید یا عنصری را به آرایه بیرونی نیز اضافه کنیم. این عملیات را با استفاده از متد .insert() نیز میتوان انجام داد. متد .insert() یکی از متدهای ماژول Array در پایتون است. پس قبل از استفاده از این متد باید ماژول Array را به محیط کدنویسی خود وارد یا Import کنیم. سینتکس استفاده از متد Array را در کادر زیر نمایش دادهایم.
عبارتهای نوشته شده در سینتکس بالا را در فهرست زیر توضیح دادهایم.
- arr1 : این عبارت نشاندهنده نام آرایهای است که عنصر مورد نظر به آن افزوده شده.
- ind: پارامتر ind ، شماره ایندکسی را نشان میدهد که عنصر مورد نظر در آن جایگاه به آرایه اضافه شده است.
- arr_insert: این پارامتر هم آرایه یا عنصری را نشان میدهد که به آرایه بیرونی وارد شده است.
اضافه کردن عنصر جدید به آرایه درونی
همینطور که در بخشهای بالایی مطلب دیدیم، آرایه دو بعدی در پایتون، آرایهای است که شامل آرایههای دیگری میشود. از این جهت میتوان به آرایههای درونی هم عنصر اضافه کرد. برای این کار هم میتوان از متد .insert() تعبیه شده در ماژول Array پایتون استفاده کرد. طبق معمول برای استفاده از متدهای تعبیه شده در ماژولها باید ابتدا آن ماژولها را به محیط کدنویسی پایتون وارد کرد. در این مورد، بهجای اضافه کردن مقدار به آرایه بیرونی، آن را به آرایه درونی اضافه خواهیم کرد. بنابراین باید شماره ایندکس جایگاه مورد نظر در آرایه درونی را مشخص کنیم.
سینتکس مورد استفاده در چنین عملیاتی را در کادر زیر نمایش دادهایم.
عبارتهای نوشته شده در سینتکس بالا را در فهرست زیر توضیح دادهایم.
- arr1: این عبارت نشاندهنده نام آرایهای بیرونی است که عنصر مورد نظر به آن افزوده شده.
- r: شماره ایندکس آرایه درونی است که در آرایه بیرونی قرار دارد و عنصر باید به ان اضافه شود. این پارامتر را میتوان به عنوان شماره ردیف در جدول آرایه دو بعدی نیز در نظر گرفت.
- ind: پارامتر ind ، شماره ایندکسی را نشان میدهد که عنصر مورد نظر در آن جایگاه به آرایه درونی اضافه شده است. این پارامتر را نیز میتوان به عنوان شماره ستون در جدول آرایه دو بعدی در نظر گرفت.
- arr_insert: پارامتر آخر هم آرایه یا عنصری را نشان میدهد که به آرایه درونی وارد شده است.
مثال های از افزودن مقدار به آرایه دو بعدی
در این بخش از مطلب، چند مثال ساده درباره روش اضافه کردن عنصر به آرایه دو بعدی در پایتون را نمایش دادهایم.
اضافه کردن آرایه به آرایه بیرونی
در این مثال، از ماژول آرایه در پایتون استفاده میکنیم. در اینجا میخواهیم که آرایه [11,12,13] را به ایندکس شماره 2 در یکی از آرایههای بالاتر این مطلب با نام arr اضافه کنیم. اضافه کردن این عنصر به آرایه باعث میشود که مقادیر بعد از ایندکس شماره ۲ به اندازه یک واحد به جلو جابهجا شوند. اگر عنصری به ایندکسی اضافه شود که خارج از محدوده است - یعنی از آخرین ایندکس آرایه بزرگتر یا از اولین ایندکس آرایه کوچکتر باشد. - با پیغام خطا روبهرو نمیشویم. بلکه عنصر مورد نظر به ایندکس مشخص شده اضافه میشود.
بعد از اجرای کد بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
Original Array 1 2 3 4 5 6 7 8 9 Modified Array 1 2 3 4 5 6 11 12 13 7 8 9
اضافه کردن عنصر به آرایه درونی
در این مثال، میخواهیم که عنصر 12 را به ایندکس 2 آرایه درونی با ایندکس 1 اضافه کنیم. برای کارکردن حرفهای با آرایهها لازم است که در کار با متدهای لیست پایتون مهارت داشته باشید. به این منظور پیشنهاد میکنیم که از مطلب متدهای لیست در پایتون، به زبان ساده با مثال و کد در مجله فرادرس برای آشنایی با رایجترین متدهای لیست استفاده کرده و مطلب کدهای پایتون آماده کاربردی و ضروری برای برنامه نویسان مبتدی تا حرفه ای را هم برای مشاهده انواع مثالهای حل شده با استفاده از این متدها بررسی کنید.
برای انجام این کار باید متد .insert() را بر روی arr[1] اعمال کنیم. یعنی اینکه از arr[1] به عنوان آرایه اصلی برای انجام عملیات «اضافه کردن عنصر» استفاده میکنیم. اگر عنصری به ایندکسی اضافه شد که خارج از محدوده بود، - یعنی بزرگتر از آخرین ایندکس یا کوچکتر از اولین ایندکس - نه تنها که با پیغام خطا روبهرو نمیشویم. بلکه عنصر مورد نظر به ایندکس مشخص شده افزوده میشود.
بعد از اجرای کد بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
Original Array 1 2 3 4 5 6 7 8 9 Modified Array 1 2 3 4 5 12 6 7 8 9
به روزرسانی مقادیر در آرایه دو بعدی
بهروزرسانی مقادیر آرایه دو بعدی به این معنا است که مقدار موجود در ایندکس مشخص شده را تغییر دهیم. بدون اینکه عناصر موجود در بقیه ایندکسها جابهجا شوند. برای بهروزرسانی هر مقداری در آرایه دو بعدی، دو روش مختلف وجود دارد.
- بهروزرسانی عنصر مجزا
- بهروزرسانی آرایه درونی
در ادامه مطلب، هر دو روش بالا را با نمایش مثال، توضیح دادهایم.
یکی از ابزارهای بسیار قوی برای کار با آرایهها در پایتون، کتابخانه NumPy است. این کتابخانه در واقع آرایه مخصوص به خود را دارد و برای کار با آن آرایه ابزارهای اختصاصی زیادی را تعریف کرده است. برای آشنایی با NumPy و روش کار آن میتوانید فیلم آموزش رایگان کتابخانه NumPy برای محاسبات علمی در پایتون را از فرادرس مشاهده کنید. لینک مربوط به این فیلم را در پایین نیز قرار دادهایم.
به روزرسانی عنصر مجزا
با مشخص کردن شماره سطر و ستون جایگاه خاصی در آرایه و تخصیص دادن مقدار مورد نظر به آن جایگاه، بهسادگی میتوانیم مقدار موجود در آرایه را با مقدار جدید، بهروزرسانی کنیم. اختصاص دادن مقدار جدید به آرایه باعث میشود که مقدار قبلی - موجود در خانه حافظه مشخص شده - بازنویسی شود. به این کار بهروزرسانی آرایه گفته میشود. اگر بخواهیم مقدار ایندکسی را بهروزرسانی کنیم که خارج از محدوده - یعنی بزرگتر از آخرین ایندکس یا کوچکتر از اولین ایندکس - است، با پیغام خطای list index out of range از طرف پایتون روبهرو میشویم.
سینتکس مربوط به روش انجام این بهروزرسانی را در کادر زیر مشاهده میکنید.
عبارتهای نوشته شده در سینتکس بالا را در فهرست زیر توضیح دادهایم.
- arr_name: این عبارت نشاندهنده نام آرایهای دو بعدی است که عملیات بهروزرسانی در آن انجام میگیرد.
- r: شماره ایندکس ردیف عنصری است که باید بهروزرسانی شود.
- c: شماره ایندکس ستون عنصری است که باید بهروزرسانی شود.
- new_element: این پارامتر هم عنصری را نشان میدهد که باید با مقدار قبلی جایگزین شود.
به روزرسانی آرایه درونی
همچنین میتوانیم یکی از آرایههای درونی را به طور کامل بهروزرسانی کنیم. برای انجام این کار باید اندیس آرایه درونی را در آرایه بیرونی مشخص کنیم. سپس آرایه جدیدی را به موقعیت آرایه قبلی تخصیص میدهیم. آرایه جدید، آرایه قدیمی را بازنویسی میکند. اگر برای بهروزرسانی آرایهای که خارج از محدوده اندیسهای آرایه بیرونی قرار دارد، تلاش کنیم، پایتون خطای list index out of range را به بیرون برمیگرداند.
سینتکس مورد نظر برای اجرای این عملیات را در کادر زیر مشاهده میکنید.
عبارتهای نوشته شده در سینتکس بالا را در فهرست زیر توضیح دادهایم.
- arr_name: این عبارت نشاندهنده نام آرایهای دو بعدی است که عملیات بهروزرسانی در آن انجام میگیرد.
- ind : شماره ایندکس آرایهای است که باید بهروزرسانی شود.
- new_Array : این پارامتر هم آرایهای را نشان میدهد که باید بر روی آرایه قبلی نوشته شود.
مثال های به روزرسانی
در بخش بالا دو روش بهروزرسانی آرایه را معرفی کرده و توضیح دادیم. اکنون در ادامه این قسمت از مطلب، برای هر کدام از این روشها مثالهای سادهای را کدنویسی کردهایم. در ابتدا مثال مربوط به روش بهروزرسانی عنصر مجزا را نمایش میدهیم.
روش اول: به روزرسانی عنصر مجزا
در این مثال، مقدار موجود در تقاطع ستون شماره 2 و ردیف شماره 1 را با عدد 16 بهروزرسانی کردهایم. در نتیجه انجام این عملیات، مقدار قدیمی حذف شده و مقدار جدید در جای آن نشسته است. پس نیاز به حرکت دادن عناصر بعدی نداریم.
بعد از اجرای کد بالا، آرایه، بهروزرسانی شده و خروجی به شکل زیر در ترمینال پایتون نمایش داده میشود.
Original Array 1 2 3 4 5 6 7 8 9 Modified Array 1 2 3 4 5 16 7 8 9
روش دوم: به روزرسانی آرایه داخلی
در ایندکس شماره 1 از آرایه بیرونی، آرایهای قرار گرفته است. البته همه عناصر آرایه بیرونی، خود آرایههای مجزایی هستند. در این مثال، عنصر با ایندکس شماره 1 از آرایه بیرونی را با آرایه جدیدی به نام new_arr جایگزین میکنیم. در واقع در حال بهروزرسانی محتویات ایندکس شماره 1 در آرایه خارجی هستیم.
برای این بهروزرسانی باید مقدار آرایه داخلی مشخص شده با مقدار آرایه جدید بازنویسی شود.
بعد از اجرای کد بالا، آرایه بهروزرسانی شده و خروجی به شکل زیر در ترمینال پایتون نمایش داده میشود.
Original Array 1 2 3 4 5 6 7 8 9 Modified Array 1 2 3 10 11 12 7 8 9
حذف مقادیر از آرایه دو بعدی در پایتون
حذف مقادیر از آرایه به معنی این است که ابتدا مقدار خاصی در ایندکس معلومی را مشخص کرده و سپس اقدام به حذف آن مقدار از درون آرایه بکنیم. برای انجام عملیات مربوط به حذف مقدار از ارایه میتوانیم از ماژول Array در پایتون استفاده کنیم. این مسئله بخاطر آن است که عناصر بعد از مقدار حذف شده باید یک واحد به عقب برگردند.
حذف مقدار از آرایههای دو بعدی را میتوان به دو روش مختلف انجام داد.
- حذف عنصر مجزا
- حذف آرایه درونی
در ادامه مطلب، هر دو روش بالا را با نمایش مثال، توضیح دادهایم.
حذف عنصر مجزا
برای حذف هر عنصری در آرایههای دو بعدی فقط لازم که ایندکس مربوط به سطر و ستون آن را مشخص کرده و سپس متد del() را بر روی آن اعمال کنیم. بنابراین بازهم نیاز داریم که ماژول Array در پایتون را به محیط کدنویسی خود وارد کنیم. اگر تلاش کنیم که مقداری را با ایندکس خارج از محدوده حذف کنیم، پایتون خطای list index out of range را به بیرون برمیگرداند.
سینتکس مربوط به حذف عنصر از درون آرایه دو بعدی را در کادر زیر مشاهده میکنید.
عبارتهای نوشته شده در سینتکس بالا را در فهرست زیر توضیح دادهایم.
- arr_name: این عبارت نشاندهنده نام آرایهای دو بعدی است که عملیات حذف عنصر در آن انجام میگیرد.
- r: شماره ایندکس ردیفی است عنصر مورد نظر در آن قرار دارد.
- c: شماره ایندکس ستونی است عنصر مورد نظر در آن قرار دارد.
حذف آرایه درونی
در پایتون میتوانیم آرایه کاملی را از درون آرایه خارجی حذف کنیم. برای انجام این کار میتوان تابع del() را بر روی هر کدام از عناصر آرایه بیرونی - که خودشان آرایه هستند. - به کار برد. فقط کافی است که شماره ایندکس مربوط به آن آرایه مشخص شود. طبق معمول باید ماژول Array را با استفاده از کد import array به محیط کدنویسی پایتون وارد کنیم. این ماژول جزو ماژولهای درونی پایتون است. بنابراین در کامپایلرهای آنلاین پایتون هم بدون نیاز به نصب میتوان از آن استفاده کرد. اگر تلاش کنیم که مقداری را با ایندکس خارج از محدوده آرایه بیرونی حذف کنیم، پایتون پیغام خطای list index out of range را به بیرون برمیگرداند.
سینتکس مربوط به عملیات حذف آرایه درونی را در کادر زیر مشاهده میکنید.
عبارتهای نوشته شده در سینتکس بالا را در فهرست زیر توضیح دادهایم.
- arr_name: این عبارت نشاندهنده نام آرایهای دو بعدی است که عملیات حذف عنصر در آن انجام میگیرد.
- ind: شماره ایندکس عنصری است که باید حذف شود.
مثال های عملیات حذف از درون آرایه دو بعدی
در این بخش از مطلب، برای هر کدام از روشهای حذف عناصر مختلف از درون آرایه دو بعدی مثالهای سادهای را به صورت کدنویسی شده نمایش دادهایم.
حذف عنصر مجزا
در مثال زیر، عنصر قرار گرفته در ستون با ایندکس شماره 2 و سطر با ایندکس شماره 1 را حذف کردهایم. بعد از اجرای عملیات حذف، تمام مقادیر بعدی باید یک واحد به عقب جابهجا شوند.
بعد از اجرای کد بالا، عنصر مورد نظر از درون آرایه حذف شده و خروجی به شکل زیر در ترمینال پایتون نمایش داده میشود.
Original Array 1 2 3 4 5 6 7 8 9 Modified Array 1 2 3 4 5 7 8 9
حذف آرایه درونی
در این مثال، آرایه قرارگرفته در ایندکس شماره 1 از آرایه بیرونی را حذف میکنیم. در نتیجه اجرای این عملیات، تمام آرایههای درونی بعد از آن باید به اندازه یک واحد به عقب جابهجا شوند.
بعد از اجرای کد بالا، آرایه درونی مورد نظر از درون آرایه بیرونی حذف شده و خروجی به شکل زیر در ترمینال پایتون نمایش داده میشود.
Original Array 1 2 3 4 5 6 7 8 9 Modified Array 1 2 3 7 8 9
روش آدرس یابی حافظه در آرایه دو بعدی در پایتون
در این مطلب دانستیم که آرایههای دو بعدی در پایتون نیز به روش خطی در حافظه ذخیره میشوند. در تصویر زیر روش ذخیرهسازی آرایههای دو بعدی در حافظه را مشاهده میکنید. عناصر ردیف اول در آرایه دو بعدی به صورت متوالی در حافظه ذخیره شدهاند. سپس عناصر مربوط به ردیف دوم و در نهایت نیز عناصر مربوط به ردیف آخر به همین ترتیب در حافظه قرار گفتهاند. مسئله بعد درباره روش محاسبه آدرس عناصر حافظه است.
همیشه آدرس حافظه مربوط به اولین عنصر از اولین ردیف را میدانیم. به همین شکل پیدا کردن آدرس بقیه عناصر ردیف اول در حافظه نیز ساده است. آدرس هر عنصر از ردیف اول برابر است با آدرس اولین عنصر در ردیف اول بهعلاوه شماره ایندکس عناصر ضرب در اندازه هر عنصر.
این معادل برای ردیفهای بعدی کمی پیچیدهتر میشود. زیرا باید ابتدا اندازه همه ردیفهای قبل از آنها را محاسبه کنیم. بنابراین آدرس عنصری در ردیفهای بعدی برابر با مجموع آدرس حافظه اولین عنصر از اولین ردیف با تعداد عناصر موجود در هر ردیف، ضرب در تعداد ردیفهای قبل از ردیف جواب بهعلاوه ایندکس ستون مربوط به عنصر مورد نظر، همه این موارد باید ضرب در اندازه عنصرها در آرایه شود.
فرمول زیر، این مفهوم را به شکل واضحتری نمایش میدهد.
پارامترهای به کار برده شده در فرمول بالا را در فهرست زیر توضیح دادهایم.
- i و j نماینده ایندکسهای ردیف و ستون عنصر مورد نظر هستند.
- B آدرس پایه مربوط به اولین عنصر از اولین ردیف است.
- C تعداد عناصر موجود در هر ردیف را نشان میدهد.
- size نشاندهنده فضای مورد استفاده برای ذخیرهسازی هر عنصر در آرایه است.
- و arr[i][j] هم آدرس عنصر موجود در ردیف i-ام و ستون j-ام آرایه در حافظه است.
فیلم های پروژه محور برای یادگیری پایتون
فرادرس یکی از بزرگترین و حرفهایترین تولیدکنندگان فیلمهای آموزشی به زبان فارسی است. فرادرس تقریبا به صورت روزانه در تمام رشتههای علمی، صنعتی، تحصیلی و غیره فیلمهای آموزشی بسیار با کیفیتی را منتشر میکند. از سوی دیگر، زبان برنامهنویسی پایتون یکی از پرطرفدارترین زبانهای مورد استفاده است و افراد زیادی خواستار دسترسی به دورههای آموزشی آن هستند. بنابراین فرادرس سعی میکند تا بهترین فیلمهای آموزشی درباره زبان پایتون را تولید و منتشر کند. یکی از روشهای بسیار خوب برای یادگیری برنامهنویسی، آموزش همراه با اجرای پروژههای رایج در دنیای واقعی است. به همین جهت در فرادرس فیلمهای آموزشی پروژه محور زیادی در ارتباط با زبان برنامهنویسی پایتون تهیه شدهاند.
در پایین، چند مورد فیلم آموزشی پروژهمحور زبان پایتون را معرفی کردهایم.
- فیلم آموزش پروژه محور پایتون درباره ایجاد QR Code و اسکن آن با ۴ کتابخانه Python در فرادرس
- فیلم آموزش پروژه محور پایتون درباره ساخت دستیار صوتی، از طراحی توابع تا اجرای برنامه با فرادرس
- فیلم آموزش ساخت چت بات در پایتون با ChatGPT از فرادرس
- فیلم آموزش پروژه محور پایتون درباره طراحی ماشین حساب با Python در فرادرس
- فیلم آموزش پروژه محور پایتون درباره پیاده سازی سیستم مدیریت کتابخانه در فرادرس
در صورت تمایل با کلیک بر روی تصویر زیر به صفحه اصلی این مجموعه آموزشی هدایت شده و از فیلمهای پروژهمحور بیشتری دیدن کنید.
جمعبندی
آرایه به مجموعهای از ساختارهای داده خطی گفته میشود که شامل عناصری با نوع داده یکسان هستند. عناصر این نوع از ساختارها در فضای حافظه به شکل متوالی قرار میگیرند. آرایه مانند ظرفی است که تعداد مشخصی عنصر از نوع داده یکسان را نگهداری میکند. ایندکس آرایههای دو بعدی نیز مانند آرایههای معمولی از صفر شروع میشود. بنابراین برنامهنویسان میتوانند به سادگی به موقعیت قرارگیری هر عنصر دست پیدا کنند و انواع عملیات مختلف را بر روی آرایه انجام دهند. آرایه دو بعدی، آرایهای است که شامل آرایههای دیگر میشود. به همین دلیل آرایههای دو بعدی را میتوان با شکل ماتریس و با استفاده از ردیف و ستون نیز نمایش داد. در این آرایهها موقعیت دقیق هر عنصر بهجای نشان داده شدن با یک ایندکس، توسط دو ایندکس متمایز از هم نشان داده میشود.
در پایتون میتوانیم به عناصر آرایههای دو بعدی با استفاده از دو ایندکس به شکل مستقیم دسترسی داشته باشیم. ایندکس اول شماره ردیفی را مشخص میکند که عنصر در آن قرار دارد و ایندکس دوم شماره ستون قرارگیری ایندکس را نشان میدهد. در این مطلب از مجله فرادرس با آرایه دو بعدی در پایتون آشنا شده و انواع عملیات رایج بر روی آن را پیادهسازی کردیم.