تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

مقدمه‌ای بر تابع enumerate در Python

مقدمه‌ای بر تابع enumerate در python

پیمایش انواع داده‌ها یکی از متداول‌ترین کارهایی است که هر برنامه‌نویس در پروژه‌های مختلف با آن سروکار دارد بنابراین یادگیری یک تکنیک اساسی و درست می‌تواند تاثیر بسیار زیادی در عملکرد برنامه‌های شما داشته باشد. حال ما در این مقاله تصمیم داریم تابع enumerate که به‌صورت پیش‌فرض در Python 3 ارائه شده است را به شما معرفی کنیم.

در این مقاله خواهید خواند:

  • معرفی و نحوه کارکرد تابع enumerate
  • متد enumerate پایتون
  • جمع بندی

اما قبل از پرداختن به اصل موضوع، آیا این سوال برای شما پیش آمده که چرا اکثر توسعه‌دهندگان در اسکریپت‌های Python خود از متد range در حلقه‌ی for برای پیمایش لیست‌ها استفاده می‌کنند؟ در جواب این سوال باید به پیش‌زمینه و تجربه‌ی هر توسعه‌دهنده نگاه کرد. برای مثال اگر توسعه‌دهنده‌ای قبلا از زبان‌های C و PHP به‌عنوان ابزار کار خود استفاده کرده باشد، در این زبان‌ها استفاده از متغیر‌های افزاینده i++ در حلقه‌ی for یک روش متداول برای پیمایش ایندکس‌های هر آرایه‌ است:

<?php
$scores = [54, 67, 48, 99, 27];
for ($i = 0; $i < count($scores); $i++) {
    echo "{$i} {$scores[$i]} \n";
}

خروجی کدهای فوق به شکل زیر خواهد بود:

0 54
1 67
2 48
3 99
4 27

حال اگر فردی با این پیش‌زمینه بخواهد از زبان Python استفاده کند، به‌دنبال راه‌حلی مشابه است و برای پیاده‌سازی همین روش در زبان Python می‌توان از حلقه‌ی for و متد range استفاده کرد اما مشکلی وجود دارد و آن هم نامناسب بودن این روش برای پیمایش داده‌ها است زیرا اگر فرض را بر این بگیریم که می‌خواهیم لیستی را پیمایش کنیم، خود لیست در این روش پیمایش نمی‌شود و ما از یک متغیر برای فراخوانی مقدار ایندکس‌ها استفاده می‌کنیم. بااین‌حال استفاده‌ از حلقه‌ی for و متد range هنوز میان توسعه‌دهندگان Python رواج دارد:

scores = [54, 67, 48, 99, 27]
for i in range(len(scores)):
    print(i, scores[i])

اکنون زمان آن است که به‌سراغ معرفی و نحوه‌ی استفاده از تابع enumerate برویم.

آموزش استفاده از تابع Zip در زبان Python را در مقاله زیر می‌توانید مطالعه کنید.
تابع Zip در زبان Python

معرفی و نحوه کارکرد تابع enumerate

تابع enumerate با سینتکس enumerate(sequence, start=0) را می‌توان در بخش‌ها و شرایط‌های مختلفی از پروژه استفاده کرد اما بیایید همان حلقه‌ی for که در مثال بخش قبل آورده شده است را درنظر بگیریم. در حلقه‌ی for از تابع enumerate می‌توان به‌عنوان یک پیماینده استفاده کرد که انواع داده‌‌های مختلف قابل پیمایشی مانند List، Tuple، String و Dictionary را در پارامتر اول دریافت می‌کند.

در پارامتر دوم نیز می‌توان ایندکسی که می‌خواهید پیمایش از آن شروع شود را وارد کرد که البته وارد کردن پارامتر دوم اختیاری است و اگر دومین پارامتر وارد نشود، پیمایش از ایندکس شماره‌ی 0 شروع می‌شود:

scores = [54, 67, 48, 99, 27]
for i, score in enumerate(scores):
    print(i, score)

همان‌طور که مشاهده می‌کنید این کد بسیار تمیزتر است و دیگری نیازی نیست تا از متد range و متغیرهای افزاینده برای فراخوانی ایندکس‌های مختلف مورد نظر خود استفاده کنید. همچنین می‌توانید با وارد کردن پارامتر دوم به تابع enumerate از ایندکس دیگری پیمایش توالی ورودی را شروع کنید:

scores = [54, 67, 48, 99, 27]
for i, score in enumerate(scores, 1):
    print(i, score)

متد enumerate پایتون

Enumerate یک متد داخلی پایتون است. نمی توان مفید بودن آن را در یک خط خلاصه کرد. با این حال، اکثر تازه واردان و حتی برخی از برنامه نویسان حرفه‌ای از آن بی اطلاع هستند. این به ما اجازه می دهد تا روی چیزی حلقه بزنیم و یک شمارنده خودکار داشته باشیم. به عنوان مثال:

y_list = ['apple', 'banana', 'grapes', 'pear']
for counter, value in enumerate(my_list):
    print counter, value

# Output:
# 0 apple
# 1 banana
# 2 grapes
# 3 pear

و موارد بیشتری وجود دارد! enumerate همچنین یک آرگومان اختیاری را می پذیرد که به ما اجازه می دهد شاخص شروع شمارنده را مشخص کنیم.

my_list = ['apple', 'banana', 'grapes', 'pear']
for c, value in enumerate(my_list, 1):
    print(c, value)

# Output:
# 1 apple
# 2 banana
# 3 grapes
# 4 pear

نمونه ای از مواردی که enumerate برشمردن مفید است، ایجاد tuple حاوی item و index با استفاده از یک لیست است. به عنوان مثال:

my_list = ['apple', 'banana', 'grapes', 'pear']

counter_list = list(enumerate(my_list, 1))

print(counter_list)
# Output: [(1, 'apple'), (2, 'banana'), (3, 'grapes'), (4, 'pear')]
همین حالا هاست ابری Python رو سفارش بدید و پروژه‌تون رو با سرعت بالا راه‌اندازی کنید!
✅ دامنه رایگان ✅ ترافیک نامحدود ✅ هزینه ساعتی
خرید هاست ابری Python

جمع‌بندی

تابع enumerate یکی از ابزارهای ساده اما بسیار کاربردی در Python است که به شما امکان می‌دهد هنگام پیمایش توالی‌هایی مثل لیست‌ها، به‌طور هم‌زمان به اندیس (index) و مقدار (value) هر عنصر دسترسی داشته باشید.

در حالی که بسیاری از توسعه‌دهندگان تازه‌کار به استفاده از ترکیب range(len(…)) برای پیمایش عادت دارند، enumerate راه‌حلی خواناتر، پایتونی‌تر و ایمن‌تر ارائه می‌دهد. این تابع نه‌تنها کد شما را تمیزتر می‌کند، بلکه قابلیت شروع شمارش از یک اندیس دلخواه را نیز فراهم می‌سازد. همچنین، می‌توان از enumerate برای تولید لیست‌هایی از tupleها که شامل شماره‌گذاری و مقدار هستند استفاده کرد، که در بسیاری از سناریوهای واقعی مثل نمایش لیست‌ها، لاگ‌برداری یا تحلیل داده مفید است.

به اشتراک بگذارید

برچسب‌ها: