Added alternative implementation for Iterator pattern using the Iterator protocol
diff --git a/README.md b/README.md
index 77526b42..49ad4d4a 100644
--- a/README.md
+++ b/README.md
@@ -42,6 +42,7 @@ __Behavioral Patterns__:
 | [chaining_method](patterns/behavioral/chaining_method.py) | continue callback next object method |
 | [command](patterns/behavioral/command.py) | bundle a command and arguments to call later |
 | [iterator](patterns/behavioral/iterator.py) | traverse a container and access the container's elements |
+| [iterator](patterns/behavioral/iterator_alt.py) (alt. impl.)| traverse a container and access the container's elements |
 | [mediator](patterns/behavioral/mediator.py) | an object that knows how to connect other objects and act as a proxy |
 | [memento](patterns/behavioral/memento.py) | generate an opaque token that can be used to go back to a previous state |
 | [observer](patterns/behavioral/observer.py) | provide a callback for notification of events/changes to data |
diff --git a/patterns/behavioral/iterator_alt.py b/patterns/behavioral/iterator_alt.py
new file mode 100644
index 00000000..afc23a03
--- /dev/null
+++ b/patterns/behavioral/iterator_alt.py
@@ -0,0 +1,58 @@
+"""
+Implementation of the iterator pattern using the iterator protocol from Python
+
+*TL;DR
+Traverses a container and accesses the container's elements.
+"""
+
+
+class NumberWords:
+    """Counts by word numbers, up to a maximum of five"""
+    _WORD_MAP = (
+        'one',
+        'two',
+        'three',
+        'four',
+        'five',
+    )
+
+    def __init__(self, start, stop):
+        self.start = start
+        self.stop = stop
+
+    def __iter__(self):  # this makes the class an Iterable
+        return self
+
+    def __next__(self):  # this makes the class an Iterator
+        if self.start > self.stop or self.start > len(self._WORD_MAP):
+            raise StopIteration
+        current = self.start
+        self.start += 1
+        return self._WORD_MAP[current - 1]
+
+
+# Test the iterator
+
+def main():
+    """
+    # Counting to two...
+    >>> for number in NumberWords(start=1, stop=2):
+    ...     print(number)
+    one
+    two
+
+    # Counting to five...
+    >>> for number in NumberWords(start=1, stop=5):
+    ...     print(number)
+    one
+    two
+    three
+    four
+    five
+    """
+
+
+if __name__ == "__main__":
+    import doctest
+
+    doctest.testmod()

In this PR I add the alternative version on how to implement the Iterator pattern using the Iterator protocol from Python. I followed the same example in the original version so that they can be easily compared.