Python in Hindi - Python Iterators


Introduction to Python Iterators

Iterator एक tool होता है जिसके माध्यम से कुछ items की list को जल्दी और आसानी से iterate किया जा सकता है। Iterator feature कई popular programming languages द्वारा implement और support किया गया है।
हालाँकि python में iterators को अलग तरह से implement किया जाता है लेकिन ये कार्य बाकी programming languages की तरह ही करते है।

Object That Can Be Iterated Upon

Python में iterator एक object है जिसे iterate किया जा सकता है। Object के सभी items को at least एक बार access करना iterate करना कहलाता है।

Implements Iterator Protocol

Python में किसी भी object को iterator बनाने के लिए iterator protocol को implement करने की आवश्यकता होती है। यह protocol दो methods द्वारा बनता है जो iterating process को perform करते है।
  • __iter__() – Returns iterator object
  • __next__() – Iterate next item 

Python Iterable Objects

Python में ऐसे कुछ objects है जिनमें पहले से ही iterator protocol को built in रूप से implement किया गया है। ये objects __iter__() और __next__() methods provide करते है। ऐसे objects को iterable objects कहा जाता है।
Iterable objects के लिए आपको अलग से iterator protocol नहीं implement करना होता है। इन्हे directly iterate किया जा सकता है। Python में list, tuple, dictionary, set और strings iterable objects होते है।

List 

myList = [“Best”, “Hindi”, “Tutorials”]
list_Iterator = iter(myList)     #Returns an iterator of myList

print(next(list_Iterator))      #/Prints first item
print(next(list_Iterator))      #Prints second item
print(next(list_Iterator))    #Prints third item

Tuples

myTuple = (“Hello”, “Reader”)
tuple_Iterator = iter(myTuple)      #Returns an iterator of myTuple

print(next(tuple_iterator)) 
print(next(tuple_iterator))

Strings

myString = “Best”
string_Iterator = iter(myString)

print(next(string_Iterator))
print(next(string_Iterator))
print(next(string_Iterator))
print(next(string_Iterator))
Lists और tuples की ही तरह sets और dictionaries भी iterable है, जिन्हें आप समान तरीके से iterate कर सकते है। 

Iterating Using For Loop

हालाँकि iterable objects default iterator protocol के साथ आते है लेकिन आप इन्हें for loop द्वारा भी iterate कर सकते है। For loop द्वारा iterate करना बहुत आसान होता है और आपको iterator object प्राप्त करने की भी जरुरत नहीं होती है। 
myList = [“Best”,”Hindi”,”Tutorials”]     #creating myList

for x in myList:      #Iterating all myList items using for loop
    print(x)            #print all list items
इसी प्रकार दूसरे python objects को भी for loop द्वारा iterate किया जा सकता है। For loop automatically iterator object create करता है और next() method को call करता है।

Custom Python Iterator

ऐसे objects जो by default iterator protocol implement नहीं करते है उनको iterate करने के लिए आपको उनमें iterator protocol implement करने की आवश्यकता होती है।
जैसा की मैने पहले बताया किसी भी object को iterator बनाने के लिए दो methods को implement करने की आवश्यकता होती है। आइये इनके बारे में detail से जानने का प्रयास करते है।

__iter__()

यदि आपने python class में define किये जाने वाले __init__() method के बारे में पढ़ रखा है तो में आपको बताना चाहूँगा की यह method init() method के जैसा ही है।
इन दोनों methods में जो main difference है वह यह की __iter__() method से आपको iterator object को return करना अनिवार्य होता है।

__next__()

यह method next item को return करता है। यह method मुख्यतः iterator operations perform करने के लिए use किया जाता है। 

Example of Python Custom Iterator

class myTable:
    def __iter__(self):
        self.n = 2
        return self

    def __next__(self):
        x = self.n
        self.n += 2
        return x
obj = myTable()
myIterObj = iter(obj)
print(next(myIterObj))
print(next(myIterObj))
print(next(myIterObj))
2
4
6

Post a Comment

0 Comments