From 588f06736b9da07b60efc3b03fc14581ef1a4113 Mon Sep 17 00:00:00 2001 From: Corey Schafer Date: Tue, 23 Oct 2018 17:44:00 -0600 Subject: [PATCH] Iterators Tutorial --- Python/Iterators-Coding-Problem/iter-demo.py | 41 ++++++++++++++++++++ Python/Iterators/iter-demo.py | 29 ++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 Python/Iterators-Coding-Problem/iter-demo.py create mode 100644 Python/Iterators/iter-demo.py diff --git a/Python/Iterators-Coding-Problem/iter-demo.py b/Python/Iterators-Coding-Problem/iter-demo.py new file mode 100644 index 000000000..1aa477a7c --- /dev/null +++ b/Python/Iterators-Coding-Problem/iter-demo.py @@ -0,0 +1,41 @@ + +class Sentence: + + def __init__(self, sentence): + self.sentence = sentence + self.index = 0 + self.words = self.sentence.split() + + def __iter__(self): + return self + + def __next__(self): + if self.index >= len(self.words): + raise StopIteration + index = self.index + self.index += 1 + return self.words[index] + + +def sentence(sentence): + for word in sentence.split(): + yield word + + +my_sentence = sentence('This is a test') + +# for word in my_sentence: +# print(word) + +print(next(my_sentence)) +print(next(my_sentence)) +print(next(my_sentence)) +print(next(my_sentence)) +print(next(my_sentence)) + + +# This should have the following output: +# This +# is +# a +# test diff --git a/Python/Iterators/iter-demo.py b/Python/Iterators/iter-demo.py new file mode 100644 index 000000000..e4fae6da2 --- /dev/null +++ b/Python/Iterators/iter-demo.py @@ -0,0 +1,29 @@ + +class MyRange: + + def __init__(self, start, end): + self.value = start + self.end = end + + def __iter__(self): + return self + + def __next__(self): + if self.value >= self.end: + raise StopIteration + current = self.value + self.value += 1 + return current + + +def my_range(start): + current = start + while True: + yield current + current += 1 + + +nums = my_range(1) + +for num in nums: + print(num)