Toshkent axborot texnalogiyalar universteti
Download 17.27 Kb.
|
1 2
Bog'liqShavkatov Dt arxitekturas
- Bu sahifa navigatsiya:
- __iter__()
- NumberIterator
- ListIterator
TOSHKENT AXBOROT TEXNALOGIYALAR UNIVERSTETI 2-topshiriq Shavkatov Behruz Guruh:312-20 Axborotlar strukturasi bilan ishlashda iteratorlarni amalga oshirish uchun umumiy interfeys yaratish mumkin. Ushbu interfeysda iteratorning asosiy metodlarini ta'minlaymiz. Biz Python dasturlash tilida shunday umumiy interfeys yarata olamiz: class Iterator: def __iter__(self): return self def __next__(self): raise NotImplementedError("Subclasses must implement __next__() method.") Bu interfeysda __iter__() va __next__() metodlari aniqlanadi. __iter__() metodi iterator obyektini o'zini qaytaradi. __next__() metodi esa keyingi elementni qaytarish va agar tugagan bo'lsa StopIteration xato xabarni qaytaradi. Misol uchun, sonlar ketma-ketligi uchun iterator yarataylik: class NumberIterator(Iterator): def __init__(self, start, end): self.start = start self.end = end self.current = start def __next__(self): if self.current > self.end: raise StopIteration else: num = self.current self.current += 1 return num Bu misolda NumberIterator klassi Iterator klassidan vorislik oladi. __next__() metodida bajarilishi kerak bo'lgan logika kiritiladi. Misol uchun, start va end orqali belgilangan oraliqdagi sonlarni qaytaradi. Ushbu umumiy iterator interfeysi va undan vorislangan klasslar yordamida siz dasturlaringizda iteratorlarni yaratish va ulardan foydalanish imkoniyatiga ega bo'lasiz. Sizning so'rovingiz ustida, shablon bilan o'tmoqchi bo'lgan to'plamlar uchun maxsus iterator sinflarini yaratish kerak. Bu iteratorlar faqat bitta to'plam ob'ektiga bog'langan bo'lishi va odatda bu bog'lanishlar konstruktor orqali o'rnatilishi kerak. Quyidagi misolda, ListIterator va SetIterator nomli iterator sinflarini ko'rsataman: class ListIterator: def __init__(self, collection): self.collection = collection self.index = 0 def __iter__(self): return self def __next__(self): if self.index >= len(self.collection): raise StopIteration else: element = self.collection[self.index] self.index += 1 return element class SetIterator: def __init__(self, collection): self.collection = collection self.iteration_set = set(collection) self.current = None def __iter__(self): return self def __next__(self): if not self.iteration_set: raise StopIteration else: self.current = self.iteration_set.pop() return self.current Download 17.27 Kb. Do'stlaringiz bilan baham: |
1 2
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling