Generators
Links
Generator Expressions
Generator expressions are shorthand for generators. Just like list
comprehensions, but with ()
instead of []
:
In [1]: items = (str(x) for x in range(6))
In [2]: items
Out[2]: <generator object <genexpr> at 0x8d1cb1c>
In [3]: for i in items: print i
0
1
2
3
4
5
Sample
Here is a sample generator:
def get_next_char(valid_chars):
i = 0
switch = False
while True:
yield valid_chars[i], switch
if switch:
switch = False
i = i + 3
if i > len(valid_chars) -1:
i = i - len(valid_chars)
switch = True
…and here are two different ways of using it:
count = 0
valid_chars = 'XJ62RY9K51FWNC37PE8M4THV0DGLQ'
for char_1, switch_1 in get_next_char(valid_chars):
count = count + 1
if switch_1:
print '|',
print char_1,
if count > 50:
break
x = get_next_char('XJ62RY9K51FWNC37PE8M4THV0DGLQ')
print x.next()
print x.next()