sample iterable example

This commit is contained in:
Mert Gör 🇹🇷 2023-09-03 15:27:46 +03:00
parent 86b03a8f09
commit 02817aa993
No known key found for this signature in database
GPG Key ID: 2100A876D55B39B9
2 changed files with 94 additions and 0 deletions

View File

@ -0,0 +1,47 @@
class SampleIterable:
def __init__(self, *args):
self._args = args
def __iter__(self):
return SampleIterator(self._args)
def __reversed__(self):
return SampleReverseIterator(self._args)
class SampleIterator:
def __init__(self, args):
self._args = args
self._i = 0
def __iter__(self):
return self
def __next__(self):
if self._i == len(self._args):
raise StopIteration
self._i += 1
return self._args[self._i - 1]
class SampleReverseIterator:
def __init__(self, args):
self._args = args
self._i = len(self._args) - 1
def __iter__(self):
return self
def __next__(self):
if self._i < 0:
raise StopIteration
self._i -= 1
return self._args[self._i + 1]
for i in SampleIterable(1, 2, 3, 4, 5):
print(i, end = ' ')
print()
for i in reversed(SampleIterable(1, 2, 3, 4, 5)):
print(i, end = ' ')
print()

View File

@ -0,0 +1,47 @@
class SampleIterable:
def __init__(self, *args):
self._args = args
def __iter__(self):
return SampleIterator(self._args)
def __reversed__(self):
return SampleReverseIterator(self._args)
class SampleIterator:
def __init__(self, args):
self._args = args
self._i = 0
def __iter__(self):
return self
def __next__(self):
if self._i == len(self._args):
raise StopIteration
self._i += 1
return self._args(self._i - 1)
class SampleReverseIterator:
def __init__(self, args):
self._args = args
self._i = len(self._args) - 1
def __iter__(self):
return self
def __next__(self):
if self._i < 0:
raise StopIteration
self._i -= 1
return self._args[self._i + 1]
for i in SampleIterable(1, 2, 3, 4, 5):
print(i, end = ' ')
print()
for i in reversed(SampleIterable(1, 2, 3, 4, 5)):
print(i, end = ' ')
print()