تکرارگر در پایتون — به زبان ساده

عکس شاخص تکرارگر در پایتون

تکرارگر در پایتون «Iterator» شی‌ای است که دنباله‌ای از مقادیر را نگه می‌دارد و امکان پیمایش ترتیبی در مجموعه‌ای از آیتم‌ها مانند لیست‌ها، تاپل‌ها و دیکشنری‌ها را فراهم می‌کند. شی تکرارگر در پایتون با استفاده از متد ()iter مقداردهی اولیه می‌شود و سپس از متد ()next برای پیمایش در مجموعه استفاده می‌شود. متد ()next هر بار که فراخوانی می‌شود، به ترتیب آیتم‌های موجود در مجموعه را برمی‌گرداند و زمانی که به انتهای دنباله برسد، خطای StopIteration را ایجاد می‌کند. این ویژگی در پایتون برای پردازش داده‌های بزرگ و کار با مجموعه‌های مختلف داده‌ای به‌طور کارآمد و بهینه مفید است.

مقدمه

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

مفهوم تکرارگر در پایتون

  • یک تکرارگر در پایتون تعداد قابل شمارش از مقادیر را در خود دارد.
  • یک تکرارگر در پایتون شی‌ای است که می‌تواند پیمایش شود، به این معنی که می‌توان از طریق تمام مقادیر آن عبور کرد.
  • از نظر فنی، تکرارگر در پایتون شی‌ای است که پروتکل Iterator را پیاده‌سازی می‌کند، که شامل متدهای ()__iter__ و ()__next__ است.

تفاوت بین Iterator و Iterable در پایتون

  • Iterable: شی‌ای است که می‌تواند یک Iterator برگرداند. این شامل ساختارهای داده داخلی مانند لیست‌ها، دیکشنری‌ها و مجموعه‌ها می‌شود. به طور کلی، هر چیزی که بتوان آن را با استفاده از یک حلقه for پیمایش کرد، یک Iterable است. Iterable متد ()__iter__ را پیاده‌سازی می‌کند که انتظار می‌رود یک شی Iterator را برگرداند.
  • Iterator: شی‌ای است که عمل پیمایش را انجام می‌دهد. Iterator دو متد را پیاده‌سازی می‌کند: ()__iter__ و ()__next__ ، متد ()__iter__ شی Iterator خودش را برمی‌گرداند و به همین دلیل، Iterator‌ها نیز Iterable محسوب می‌شوند.

عکسی در مورد تکرارگر در پایتون

مثال برای ()python iter

s = "PS"
it = iter(s)

print(next(it))
print(next(it))

خروجی:

P
S

ایجاد یک Iterator سفارشی در پایتون

  • تعریف کلاس: ابتدا یک کلاس تعریف کنید که نقش Iterator را ایفا کند.
  • مقداردهی اولیه ویژگی‌ها: در متد ()__init__ ، ویژگی‌های مورد نیاز برای فرآیند پیمایش را مقداردهی کنید.
  • پیاده‌سازی ()__iter_: این متد باید خود شی Iterator را برگرداند. معمولاً به سادگی self را برمی‌گرداند.
  • پیاده‌سازی ()__next__: این متد باید هر بار که فراخوانی می‌شود، آیتم بعدی دنباله را فراهم کند. اگر دنباله به پایان رسیده باشد، باید استثنای StopIteration ایجاد کند.

برای ایجاد یک کلاس سفارشی به نام EvenNumbers که از شماره ۲ شروع به پیمایش اعداد زوج کند، باید کلاس را با پیاده‌سازی متدهای ()__iter__ و ()__next__ تعریف کنیم.

class EvenNumbers:
    def __iter__(self):
        self.n = 2  # Start from the first even number
        return self

    def __next__(self):
        x = self.n
        self.n += 2  # Increment by 2 to get the next even number
        return x

# Create an instance of EvenNumbers
even = EvenNumbers()
it = iter(even)

# Print the first five even numbers
print(next(it))  
print(next(it)) 
print(next(it))  
print(next(it)) 
print(next(it))

خروجی:

۲
۴
۶
۸
۱۰

در اینجا، متد ()__iter__ شمارنده را از ۲ آغاز می‌کند که اولین عدد زوج است. سپس، متد ()__next__ عدد فعلی را برمی‌دارد و آن را ۲ واحد افزایش می‌دهد تا شماره زوج بعدی به دست آید. برای استفاده از این کلاس، یک نمونه از EvenNumbers ساخته می‌شود، آن را به یک Iterator تبدیل کرده و سپس از تابع ()next برای دریافت اعداد زوج یکی یکی استفاده می‌کنیم.

استثنا StopIteration

استثنای StopIteration بخشی از پروتکل iterator در پایتون است که نشان می‌دهد دیگر آیتمی برای بازگشت از Iterator وجود ندارد. زمانی که این استثنا پرتاب می‌شود، فراخوانی‌های بعدی به ()next روی همان Iterator همچنان استثنای StopIteration را ایجاد خواهند کرد.

تکرارگر در پایتون

li = [100, 200, 300]
it = iter(li)

# Iterate until StopIteration is raised
while True:
    try:
        print(next(it))
    except StopIteration:
        print("End of iteration")
        break

خروجی:

۱۰۰
۲۰۰
۳۰۰
End of iteration

در این مثال، استثنای StopIteration به طور دستی در حلقه while مدیریت می‌شود، که امکان مدیریت سفارشی زمانی که Iterator تمام می‌شود را فراهم می‌کند.

نتیجه گیری

استفاده از ساختارهای تکرارگر مانند for و while ابزارهای قدرتمندی برای اجرای چندباره دستورات در کد هستند. این ساختارها به برنامه‌نویسان امکان می‌دهند که به‌صورت کارآمد و انعطاف‌پذیر، برنامه‌هایی بنویسند که به راحتی با مجموعه‌های داده بزرگ یا شرایط پویا کار کنند. با استفاده از این دستورات می‌توان به راحتی عملیات‌های مختلف را بر روی مجموعه‌ها، شمارش تعداد تکرارگر یا انجام اقدامات تا زمانی که شرطی برقرار باشد، انجام داد. در نهایت، تکرارگر در پایتون به‌خوبی با سایر ویژگی‌های زبان ترکیب می‌شود و به ساده‌سازی و بهینه‌سازی کدنویسی کمک می‌کند.


سوالات متداول


چگونه می‌توان از یک تکرارگر در پایتون استفاده کرد؟

برای استفاده از تکرارگر در پایتون، می‌توانید از تابع ()iter برای تبدیل یک شی قابل تکرار به یک تکرارگر استفاده کنید. سپس، با استفاده از تابع ()next می‌توانید به‌طور پیوسته به عناصر آن شی دسترسی پیدا کنید.

چه زمانی باید از تکرارگرها استفاده کرد؟

استفاده از تکرارگر در پایتون زمانی مفید است که بخواهید به داده‌ها دسترسی تدریجی داشته باشید یا زمانی که مجموعه داده‌ای بزرگ است و نمی‌خواهید تمام داده‌ها را یک‌باره در حافظه ذخیره کنید.

چگونه می‌توان یک تکرارگر را پایان یافت؟

زمانی که یک تکرارگر به انتهای مجموعه برسد، تابع ()next یک استثنا به نام StopIteration را ایجاد می‌کند که نشان‌دهنده پایان داده‌ها است.

آیا تمام اشیاء قابل تکرار، تکرارگر هستند؟

نه. تنها اشیائی که متد ()__iter__ را پیاده‌سازی کرده‌اند، می‌توانند به تکرارگر تبدیل شوند. برای مثال، لیست‌ها و دیکشنری‌ها به‌طور پیش‌فرض قابل تکرار هستند.

چگونه می‌توان یک شی را به یک تکرارگر تبدیل کرد؟

از تابع ()iter برای تبدیل یک شی قابل تکرار به یک تکرارگر استفاده می‌شود.

میزان رضایتمندی
لطفاً میزان رضایت خودتان را از این مطلب با دادن امتیاز اعلام کنید.
[ امتیاز میانگین 0 از 0 نفر ]
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع و مراجع:
geeksforgeeks w3schools programiz

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *



برچسب‌ها:
برنامه نویسی پایتون پایتون


پیمایش به بالا