একটি পুনরাবৃত্তিযোগ্যকে আলগাভাবে একটি বস্তু হিসাবে সংজ্ঞায়িত করা যেতে পারে যা অন্তর্নির্মিত পদ্ধতি 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 দিয়ে শুরু করুন
- কল স্ট্রিং।__getitem__(সূচক)
- সূচক ত্রুটি উত্থাপিত হয়েছে? থামুন
- লুপের রান বডি
- সূচক বৃদ্ধি করুন, ধাপ 2 এ ফিরে যান।
ইটারেটর
Iterators একটি অবজেক্ট হিসাবে সংজ্ঞায়িত করা হয় যা একটি ইটারনাল স্টেট ভেরিয়েবলের মাধ্যমে ইন্টারেশন গণনা করে। এই ক্ষেত্রে, ভেরিয়েবলটি শূন্যে সেট করা হয় না যখন পুনরাবৃত্তি শেষ আইটেমটি অতিক্রম করে, পরিবর্তে, পুনরাবৃত্তির সমাপ্তি নির্দেশ করতে 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: # doesn't work print(j) #However for k in my_list: print(k) for l in my_list: # it worked print(l)কাজ করেছে
আউটপুট
itemOne TutorialsPoints itemOne TutorialsPoints itemOne TutorialsPoints
উপরের কোডটি সত্য ধারণ করে কারণ ইটারেটরে iter() পদ্ধতিটি নিজেই ফিরে আসে (বর্তমান অবস্থা মনে রাখা)। সুতরাং উপরে আমাদের কাছে এটিকে শেষ করার জন্য “for” এর মতো একটি লুপ ধরণের বাস্তবায়ন রয়েছে।