Iterator در پایتون قابلیتی است که به شما این امکان را می‌دهد تا از تمامی عناصر در یک کالکشن یا رشته عبور کنید و عملیات برنامه نویسی را روی آن انجام دهید. از نظر برنامه نویسی، Iterator یک شی است که شامل اعداد قابل شمارش از valueها خواهد بود. جالب است تا بدانید لیست‌ها، تاپل‌ها، دیکشنری‌ها و ست‌ها در پایتون iterable هستند و شما می‌توانید با استفاده از متدهای iter() عناصر مختلف آن‌ها را در خروجی چاپ کنید. در ادامه این مقاله از سری مقالات آموزش پایتون به این موضوع خواهیم پرداخت.

دوره پیشنهادی آموزش پایتون

به کارگیری Iteratorها در پایتون

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

Tuple = ("apple", "kiwi", "orange")

myit = iter(Tuple)

print(next(myit)) #prints apple

print(next(myit)) #prints kiwi

print(next(myit)) #prints orange

:print(next(myit)) #prints Error loading preloads

Could not find renderer

استفاده از Iterator در پایتون برای رشته‌ها

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

"String = "orange

myit = iter(String)

print(next(myit)) #prints o

print(next(myit)) #prints r

print(next(myit)) #prints a

print(next(myit)) #prints n

print(next(myit)) #prints g

print(next(myit)) #prints e

استفاده از قابلیت پیمایشگر برای لیست‌ها در پایتون

در صورتی که بخواهید برای لیست‌ها در پایتون از قابلیت Iterator استفاده کنید، این موضوع امکان پذیر است. مانند کالکشن تاپل در این زبان، شما برای لیست‌ها هم باید ابتدا یک iterator بسازید و با استفاده از کیورد next خواهید توانست تا عملیات پیمایش را روی عناصر مختلف لیست‌ها استفاده کنید.

دقت داشته باشید که با اولین بار استفاده از next عنصر اول که ایندکس صفر دارد چاپ خواهد شد و پس از آن می‌توان به ترتیب عناصر ۱، ۲ و … را در خروجی به چاپ رساند. در صورتی که تعداد استفاده از next بیش از ایندکس کالکشن مورد نظر بود، شما در خروجی خطا مشاهده خواهید کرد. 

List = [1,2,3,4,5]

myiter = iter(List)

print(next(myiter)) #prints 1

print(next(myiter)) #prints 2

print(next(myiter)) #prints 3

print(next(myiter)) #prints 4

print(next(myiter)) #prints 5

قابلیت پیمایشگر با روش‌های مختلف

امکان دسترسی به قابلیت پیمایشگر با روش‌های مختلف در پایتون وجود دارد. شما در کنار استفاده از دستور iter در این زبان، می‌توانید به راحتی با حلقه تکرار در پایتون نیز روی یک کالکشن عملیات پیمایش را انجام دهید. دقت داشته باشید که برای استفاده از قابلیت پیمایشگر در پایتون، شیء باید قابل پیمایش باشد.

Tuple = ("apple", "banana", "kiwi")

:for x in Tuple

   print(x)

prints apple banana kiwi#

برای پیمایش روی کاراکترهای یک رشته نیز می‌توانید از حلقه for به صورت زیر استفاده کنید.

String = "banana"

for x in String:

   print(x) #prints each character of the String

استفاده از Iteratorها در پایتون برای دیکشنری‌ها

استفاده از Iteratorها در پایتون برای دیکشنری‌ها امکان پذیر است اما برای رسیدن به عناصر مختلف در این نوع کالکشن‌ها شما یک تفاوت جزئی مشاهده خواهید کرد. استفاده از حلقه تکرار برای پیمایش روی عناصر دیکشنری در این زبان برنامه نویسی از مهم‌ترین مزایا به شمار می‌رود و شما برای رسیدن به valueها و keyها باید دو روش جداگانه را به کار برید.

برای دسترسی به keyها در یک دیکشنری، نیاز است تا از یک حلقه for به صورت زیر استفاده شود.

Dictionary = {"name": "john", "job": "engineer", "age": 30}

for x in Dictionary:

   print(x) #prints name job age

البته، امکان دسترسی به valueها نیز به سادگی امکان پذیر است و شما با تابع values در این زبان می‌توانید به آن‌ها دسترسی داشته باشید.

Dictionary = {"name": "john", "job": "engineer", "age": 30}

for x in Dictionary.values():

   print(x) #prints john engineer 30

در صورتی که بخواهید به صورت یکجا به keyها و valueها در یک دیکشنری دسترسی داشته باشید و عملیات Iterator در پایتون را روی آن انجام دهید، این کار با تابع items به صورت زیر امکان پذیر است.

Dictionary = {"name": "john", "job": "engineer", "age": 30}

for x,y in Dictionary.items():

   print(x,y)

##prints 

name john

job engineer

age 30

مزایای استفاده از Iterator در پایتون

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

به عنوان یک نمونه، در یک فولدر مجزا اسکریپت پایتون و یک فایل متنی به دلخواه ایجاد کنید. شما با استفاده از دستور with و حلقه for خواهید توانست تا به راحتی به صورت خط به خط به محتویات فایل مورد نظر دسترسی داشته باشید. 

with open("/home/sajjad/Documents/temp/file.txt") as myfile:

   for line in myfile:

       print(line) #prints all lines of file.txt

پس از فراخوانی فایل مورد نظر، روش دوم استفاده از دستور iter و next است که به راحتی خواهید توانست به خطوط مختلف در فایل انتخابی دسترسی داشته باشید.

with open("/home/sajjad/Documents/temp/file.txt") as myfile:

   myiter = iter(myfile)

   print(next(myiter))

   print(next(myiter))

   print(next(myiter))

   print(next(myiter))

   print(next(myiter))

جمع بندی

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