دستور pop در پایتون – از کاربرد تا نحوه استفاده با مثال و کد
- نحوه حذف عناصر لیست با دستور pop را یاد خواهید گرفت.
- یاد میگیرید عنصر موردنظر را با استفاده از ایندکس آن، از لیست حذف کنید.
- نحوه حذف جفت کلید-مقدار از دیکشنری با pop را میآموزید.
- خواهید توانست با مقدار پیشفرض، خطای KeyError را مدیریت کنید.
- با فرق pop و دستوراتی مانند del ،remove و Slicing آشنا میشوید.
- نحوه مدیریت IndexError هنگام حذف عناصر لیست را یاد خواهید گرفت.

دستور pop در پایتون چیست؟
سینتکس دستور pop
در کد نمایش داده شده بالا، list نام لیستی است که این دستور بر روی آن اجرا شده. index هم آرگومان اختیاری است. این آرگومان موقعیت عنصری را در list نشان میدهد که باید از آن حذف شود. اگر هیچ مقداری را به عنوان آرگومان index به دستور pop ارسال نکنیم، خود تابع pop() به صورت خودکار، آخرین عنصر لیست را از درون آن حذف کرده و به بیرون برمیگرداند.
در ادامه به مثالهایی از کار تابع pop() در لیستها نگاه خواهیم کرد. در این مثالها روش استفاده از تابع pop() را برای حذف و برگرداندن عنصر از درون لیست پیادهسازی کردهایم.
حذف آخرین عنصر از لیست
در مثال اول، از دستور pop در پایتون بدون آرگومان اختیاری index استفاده میکنیم. هدف از اجرای این کد، حذف آخرین عنصر از لیست و برگرداندن آن به بیرون است.
همینطور که مشاهده میکنید، در مثال بالا از متد pop() بدون هیچ آرگومانی استفاده کردهایم. در این صورت تابع pop() به صورت خودکار آخرین عنصر را از درون لیست حذف کرده و به بیرون برمیگرداند. در لیست مثال بالا که برای نگهداری نام میوهها - لیست fruits - استفاده شده است، تابع pop() عنصر 'cherry' را پیدا کرده و از لیست حذف میکند. در نهایت هم با کمک تابع print() نام این میوه را در خروجی برای نمایش به کاربر چاپ میکند.

حذف عنصرهای لیست از موقعیت مشخص شده
در این مثال، لیستی از اعداد در اختیار داریم و میخواهیم که عنصری را با موقعیت از پیش تعیین شده از این لیست حذف کنیم. بنابراین باید موقعیت عنصر را به اطلاع متد pop() برسانیم.
در مثال بالا، متد pop() همراه با آرگومان مشخصی بهکار گرفته شده است. آرگومان 2 که به متد pop() ارسال شده، شماره ایندکس عنصری را نشان میدهد که باید از لیست حذف شود، یعنی سومین عنصر. در نتیجه بر اثر اجرای کد بالا عنصر 3 از لیست numbers حذف شده و به بیرون برگشت داده میشود.
در بخشهای بعدی نیز روش حذف عناصر از درون لیست را با استفاده از متد pop() بررسی کردهایم، اما اینبار جزئیات بیشتری از این اتفاق را به صورت دقیق مورد بررسی قرار دادهایم. در این جزئیات، تمام رفتارهای متد pop() به صورت کامل از حذف عنصر گرفته تا برگشت دادن آن به طور کامل توضیح داده شدهاند.
فیلم های مربوط به آموزش های اولیه پایتون برای همه

- فیلم آموزش برنامه نویسی پایتون همراه با مثال های عملی در فرادرس
- فیلم آموزش پایتون گرافیکی، رابط های گرافیکی پایتون در فرادرس
- فیلم آموزش برنامه نویسی پایتون ویژه نوجوانان، بخش دوم در فرادرس
- فیلم آموزش رابط گرافیکی PySide2 پایتون، دوره تکمیلی از فرادرس
حذف عناصر به صورت قدم به قدم
در این قسمت با جزئیات بیشتری به بررسی روند حذف عناصر از لیست با کمک دستور pop در پایتون میپردازیم. فرض کنیم که لیستی به نام my_list - مانند کد زیر - در اختیار داریم.
متد pop() آخرین عنصر موجود در لیست را حذف کرده و به بیرون برگشت میدهد. در لیست my_list آخرین عنصر شماره 5 بود. اکنون لیست بهروزرسانی شده به شکل زیر نمایش داده میشود.
[1, 2, 3, 4]اما اگر بخواهیم که عنصر مشخصی را از لیست حذف کنیم چه باید کرد؟ برای رسیدن به این هدف، فقط کافی است که ایندکس آن عنصر را به عنوان آرگومان به متد pop() ارسال کنیم.
به عنوان مثال، برای حذف عنصری از لیست که در ایندکس شماره 1 قرار دارد - این عنصر دومین عنصر لیست است - میتوانیم کد خود را به شکل پایین بنویسیم.
در کد بالا، متد pop() عنصر قرار گرفته در ایندکس شماره 1 را - مقدار 2 - از لیست حذف کرده و مقدار آن را به بیرون برمیگرداند. بعد از اجرای کد بالا، لیست بهروز شده شبیه به مورد زیر است.
[1, 3, 4]
درک رفتار دستور pop در لیست
بسیار مهم است که بدانیم، بعد از حذف عنصری از درون لیست با استفاده از دستور pop در پایتون، لیست به صورت درجا تغییر میکند. این مسئله به معنای آن است که لیست اصلی تغییر کرده و عنصری که حذف شده دیگر جزئی از دادههای درون لیست نیست. علاوه بر موارد گفته شده، اگر ایندکس مشخص شده، فراتر از ایندکسهای در دسترس درون لیست باشد، متد pop پیغام خطای «IndexError» را به برنامه برمیگرداند.
اما در صورت استفاده از ایندکس منفی، لیست از انتها پیمایش میشود. این کار به خودیخود عامل رویدادن خطا نیست. مگر اینکه ایندکس منفی هم از محدوده ایندکسهای لیست خارج شود.
همچنین شایان ذکر است که متد pop() روشی بسیار کارآمد برای حذف عناصر از لیستهاست، زیرا این متد به صورت پیشفرض عملیات خود را برروی انتهای لیست انجام میدهد. به این معنا که حذف عناصر، بدون در نظر گرفتن اندازه لیست، زمان ثابتی صرف میکند. البته اگر نیاز به حذف عنصری از ابتدا یا میانه لیست داشته باشیم، احتمالا استفاده از متد pop() بهترین گزینه در دست نباشد. زیرا این متد بعد از حذف عنصری از ابتدا یا میانه لیست باید بقیه عناصر بعد از آن را به اندازه یک واحد فضا در لیست جابهجا کند.

در بخش بعد، به بررسی مقدار برگشت داده شده از دستور pop در پایتون و روش استفاده از آن در کدها میپردازیم.
مقدار برگشت داده شده توسط متد pop
این مقدار برگشت داده شده را میتوان به روشهای گوناگونی استفاده کرد. به عنوان مثال، میتوان آن را به متغیری اختصاص داد یا در لیست دیگری وارد کرد و یا با کمک تابع Print آن را برای نمایش در خروجی چاپ کرد.
مثال نمایش داده شده در پایین را در نظر بگیرید. در این مثال عنصری را از لیست numbers حذف کردهایم.
در مثال نمایش داده شده بالا، متد pop با استفاده از آرگومان عدد 2 استفاده شده است. استفاده از این مقدار به عنوان آرگومان باعث شده که سومین عنصر از لیست numbers، از آن حذف شده و به بیرون برگشت داده شود. عنصر سوم برابر با عدد 3 است. سپس مقدار برگشت داده شده را به متغیری به نام third_number اختصاص داده و با کمک این متغیر آن را در خروجی چاپ کردیم.
اگر متد pop را بر روی لیست خالی فراخوانی کنیم، با پیغام خطای «IndexError» روبهرو خواهیم شد. در صورت عدم اطمینان از زمان خالی شدن لیست، باید بتوانیم این خطا را مدیریت کنیم.
روش های جایگزین دستور pop در پایتون
استفاده از دستور pop برای حذف عناصر از درون لیست بسیار کاربردی است. اما در زمان کار با لیستها ممکن است با سناریوهای مختلفی روبهبرو شویم، بنابراین، همیشه نمیتوان این روش را به عنوان بهترین روش در نظر گرفت.

استفاده از عبارت del
عبارت del میتواند عنصری را از درون لیست، با ایندکس مشخص شده حذف کند. این عبارت شبیه به متد pop است که آرگومان ایندکس را میپذیرد. اما با این تفاوت که هیچ مقداری توسط عبارت del به بیرون برگشت داده نمیشود.
استفاده از متد remove
از متد remove میتوان برای حذف اولین رویداد از عنصر خاصی در درون لیست استفاده کرد. این متد، عنصری را که باید حذف شود را به عنوان آرگومان میپذیرد و هیچ مقداری را در خروجی برنمیگرداند.
تکنیک Slicing
برای حذف عناصر از لیست میتوان از تکنیک تکهتکه کردن یا Slicing نیز استفاده کرد. به منظور انجام این کار باید از نشانهگذاری مخصوص Slice استفاده شود. با این نشانهگذاری محدودهای از عناصر را مشخص میکنند که باید حفظ شده و در لیست جدیدی قرار بگیرند. روش استفاده از نشانهگذاری مخصوص Slicing را در کدهای زیر مشاهده میکنید. برای اینکار از علامت دو نقطه «: » در لیست استفاده میشود.
در مثال بالا، با کمک تکنیک تکهتکهسازی و ساخت لیست جدید با استفاده از عناصر قبل و بعد از عنصر هدف، اقدام به حذف آن عنصر کردهایم.
استفاده از دستور pop در پایتون بر روی دیکشنری ها
در کادر زیر، سینتکس استفاده از دستور pop را بر روی دیکشنریهای پایتون پیادهسازی کردهایم.
وقتی که متد pop بر روی دیکشنری اعمال میشود، کاملا مشخص است که بهجای ارسال ایندکس به آن باید یکی از کلیدهای موجود در دیکشنری را ارسال کنیم. متد pop مقدار متصل شده به آن کلید را برمیگرداند. سپس به صورت همزمان، جفت «کلید-مقدار» (Key: Value) مورد نظر را نیز از دیکشنری حذف میکند.

همچنین میتوانیم مقدار دلخواه اختیاری را تعریف کنیم که در صورت پیدا نشدن کلید مورد نظر در دیکشنری به بیرون برگشت داده شود. اگر کلید ارسال شده به عنوان آرگومان در دیکشنری پیدا نشد و همینطور مقدار دلخواهی هم به عنوان داده برگشتی پیشفرض تعریف نشده بود، در این صورت با پیغام خطای «KeyError» روبهرو میشویم. اما اگر مقدار پیشفرضی را فراهم کرده باشیم، دیگر با پیغام خطا روبهرو نشده و آن مقدار به خروجی متد برگشت داده میشود.
مقدار پیش فرض دیکشنری در پایتون
وقتی که از متد pop() بر روی دیکشنریها استفاده میکنیم، میتوانیم مقدار پیشفرضی را تعریف کنیم تا در زمانهای وجود نداشتن کلید در دیکشنری از برخواستن پیغام خطا جلوگیری کند. در چنین موقعیتهایی بهجای جواب، این مقدار پیشفرض به بیرون برگشت داده میشود. معمولا از این روش برای جلوگیری از رویدادن خطای «KeyError» استفاده میشود.
برای مثال در کد زیر عبارت Not Found چاپ خواهد شد. زیرا کلید d در دیکشنری داده شده وجود ندارد.
استفاده از متد pop بر روی دیکشنری های تودرتو
از متد pop() برای حذف عناصر از درون دیکشنریهای تودرتو هم میتوان استفاده کرد. این امکان بر روی لیستها هم به همین طریق موجود است. دیکشنریهای تودرتو به دیکشنریهایی گفته میشود که درون دیکشنریهای دیگر قرار دارند.
بر اثر اجرای کد بالا دادههای دیکشنری به صورت {'x': 7, 'y': 8, 'z': 9} در خروجی چاپ میشوند.

همچنین از طریق مشخص کردن هر جفت کلید-مقدار دلخواهی، میتوانیم اقدام به حذف مقدار درونی از یکی از دیکشنریهای موجود در درون دیکشنری اصلی بکنیم. برای مثال در کد زیر از دیکشنری اول عدد 2 را حذف خواهیم کرد.
مدیریت خطای KeyError از درون دیکشنری پایتون
رویکرد دیگری که برای مدیریت خطای «KeyError» به کار میرود استفاده از بلوک کد try-except است. این روش از روش قبلی ظریفتر و تمیزتر است. برای گیر انداختن خطاهای متد pop() در پایتون، مثال زیر، روش استفاده از بلوک کد try-except را نمایش میدهد.
روش دیگری که برای مدیریت خطای «KeyError» وجود دارد، پیشگیری از آن است. برای اینکار از کلمه کلیدی in استفاده میکنیم. با کمک کلمه کلیدی in قبل از اینکه اقدام به حذف مقدار کلید خاصی بکنیم، بررسی میکنیم که آیا کلید مورد نظر در دیکشنری وجود دارد یا نه. در صورت وجود نداشتن آن کلید، دیگر نیازی به استفاده از متد pop() نیست.
برای مثال در کد زیر، این رویکرد مدیریت خطا را پیادهسازی کردهایم.
در اثر اجرای کد بالا در خروجی عبارت «Key not found» نمایش داده میشود. زیرا کلیدی که در صدد حذف آن هستیم در دیکشنری وجود ندارد.
فیلم های مربوط به آموزش های پیشرفته پایتون در فرادرس
- فیلم آموزش مقدماتی کار با پایگاه های داده در Python با فرادرس
- فیلم آموزش ساخت ربات معامله گر با پایتون، تریدر خودکار رمز ارز در فرادرس
- فیلم آموزش رایگان کتابخانه Datetime در پایتون برای مدیریت زمان از فرادرس
- فیلم آموزش برنامه نویسی شی گرا در پایتون با فرادرس
- فیلم آموزش یادگیری عمیق با کتابخانه PyTorch در پایتون با فرادرس
در صورت تمایل با کلیک بر روی تصویر زیر به صفحه اصلی مجموعه فیلمهای آموزش برنامه نویسی پایتون هدایت شده و میتوانید فیلمهای بیشتری را مشاهده کنید.

جمعبندی
دستور pop در پایتون روشی سریع و ساده برای حذف عناصر از درون لیستها و دیکشنریهای پایتون است. شناخت دقیق رفتار این تابع در زمان حذف عناصر از جایگاههای مشخص شده یا برگشت دادن مقادیر حذف شده از لیست، برای نوشتن کدهای کارآمد مهم است. همچنین شایان ذکر است که برای متد pop در پایتون نیز جایگزینهای دیگری مانند عبارت del، دستور Remove و تکنیک «تکهتکهسازی» (Slicing) وجود دارد. با توجه به کاربردهای خاص میتوان از هر کدام از گزینههای جایگزین استفاده کرد.
در این مطلب از مجله فرادرس با دستور pop در پایتون آشنا شدیم. از سینتکس این دستور شروع کرده و تا انواع روشهای استفاده از آن را بر روی لیستها و دیکشنریها بررسی کردیم. موقعیتهای مختلف ظهور خطای «KeyError» را بیان کرده و روشهایی که برای مدیریت این خطا در لیستها و دیکشنریها وجود دارد را نیز آموزش دادهایم.
مطالب مجله فرادرس را در جستجوی گوگل سریعتر ببینید













