Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

Python इटरेबल और इटरेटर के बीच अंतर


एक इटरेबल को मोटे तौर पर एक ऑब्जेक्ट के रूप में परिभाषित किया जा सकता है जो बिल्ट-इन मेथड iter() को पास किए जाने पर एक इटरेटर उत्पन्न करेगा। एक ऑब्जेक्ट के इटरेबल होने के लिए कुछ शर्तें हैं, क्लास के ऑब्जेक्ट को दो इंस्टेंस मेथड परिभाषित करने की आवश्यकता है: __len__ और __getitem__। एक ऑब्जेक्ट जो इन शर्तों को पूरा करता है जब उसे मेथड iter() में पास किया जाता है तो एक इटरेटर उत्पन्न करेगा।

इटरेबल को समझने के लिए नीचे दिए गए उदाहरण को समझते हैं -

string = "Tutorialspoint"
for char in string:
    print(char)

आउटपुट

T
u
t
o
r
i
a
l
s
p
o
i
n
t

उपरोक्त कोड __getitem__(index) मेथड का उपयोग करता है जो इंडेक्स द्वारा निर्दिष्ट स्थिति पर तत्व लौटाएगा।

तो, हमारा उपरोक्त कोड -

  • इंडेक्स 0 से शुरू करें
  • string.__getitem__(index) कॉल करें
  • IndexError उठाया गया? रुकें
  • लूप का बॉडी चलाएं
  • इंडेक्स बढ़ाएं, चरण 2 पर वापस जाएं।

इटरेटर

इटरेटर को एक ऑब्जेक्ट के रूप में परिभाषित किया जाता है जो आंतरिक स्थिति वेरिएबल के माध्यम से पुनरावृत्ति को गिनता है। इस मामले में वेरिएबल, जब पुनरावृत्ति अंतिम आइटम को पार करती है तो शून्य पर सेट नहीं होता है, बल्कि पुनरावृत्ति के अंत को इंगित करने के लिए StopIteration() उठाया जाता है। इसका अर्थ यह भी है कि इटरेटेड आइटम को केवल एक बार इटरेट किया जाएगा, जैसे नीचे दिए गए उदाहरण में -

my_list = ['itemOne', 'TutorialsPoints']
iterators_of_some_list = iter(my_list)

for i in iterators_of_some_list:
    print(i)

for j in iterators_of_some_list: # काम नहीं करता
    print(j)

# हालांकि
for k in my_list:
    print(k)

for l in my_list: # यह काम करता है
    print(l)

आउटपुट

itemOne
TutorialsPoints
itemOne
TutorialsPoints
itemOne
TutorialsPoints

उपरोक्त कोड सही है क्योंकि इटरेटर पर iter() मेथड स्वयं को लौटाता है (वर्तमान स्थिति को याद रखने के लिए)। तो उपरोक्त हमारे पास "for" के समान लूप कार्यान्वयन का एक प्रकार है जिसे समाप्त करने के लिए।


  1. - पायथन के re.search और re.match में क्या अंतर है?

    re.match() और re.search() दोनों पायथन मॉड्यूल re के मेथड्स हैं।re.match() मेथड तभी मिलान ढूंढता है जब यह स्ट्रिंग की शुरुआत में होता है। उदाहरण के लिए, स्ट्रिंग TP Tutorials Point TP पर match() कॉल करना और पैटर्न TP खोजना मिलान करेगा।उदाहरणimport re\nresult = re.match(rTP, TP Tutorials Point TP)\npr

  1. - पायथन में raw_input() और input() फ़ंक्शन्स में क्या अंतर है?

    raw_input() फ़ंक्शन यूज़र को प्रॉम्प्ट प्रस्तुत करता है (वैकल्पिक आर्गुमेंट raw_input([arg])), यूज़र से इनपुट प्राप्त करता है और यूज़र द्वारा इनपुट किए गए डेटा को स्ट्रिंग में लौटाता है। उदाहरण के लिए, name = raw_input(What is your name? ) print Hello, %s. % name यह input() से भिन्न है जिसमें बाद व

  1. - Python में String और Byte String में क्या Difference है?

    String vs Byte String एक String Characters का Sequence होता है; ये एक Abstract Concept हैं और इन्हें Directly Disk पर Store नहीं किया जा सकता। एक Byte String Bytes का Sequence होती है - ऐसी चीजें जो Disk पर Store की जा सकती हैं। इनके बीच Mapping को Encoding कहते हैं - इनमें से काफी सारे हैं (और अनं