Toshkent axborot texnalogiyalar universteti


Download 17.27 Kb.
bet1/2
Sana18.06.2023
Hajmi17.27 Kb.
#1593444
  1   2
Bog'liq
Shavkatov Dt arxitekturas


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.



  1. 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