Created
February 5, 2014 13:47
-
-
Save atsuya046/8823938 to your computer and use it in GitHub Desktop.
GoF design pattern with Python - Iterator
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
"""http://ginstrom.com/scribbles/2007/10/08/design-patterns-python-style/ | |
Implementation of the iterator pattern with a generator""" | |
def count_to(count): | |
"""Counts by word numbers, up to a maximum of five""" | |
numbers = ["one", "two", "three", "four", "five"] | |
# enumerate() returns a tuple containing a count (from start which | |
# defaults to 0) and the values obtained from iterating over sequence | |
for pos, number in zip(range(count), numbers): | |
yield number | |
# Test the generator | |
count_to_two = lambda: count_to(2) | |
count_to_five = lambda: count_to(5) | |
print('Counting to two...') | |
for number in count_to_two(): | |
print(number, end=' ') | |
print() | |
print('Counting to five...') | |
for number in count_to_five(): | |
print(number, end=' ') | |
print() | |
### OUTPUT ### | |
# Counting to two... | |
# one two | |
# Counting to five... | |
# one two three four five |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment