Making It Safer : yield « Statement « Python Tutorial






def flatten(nested):
    try:
        try: nested + ''
        except TypeError: pass
        else: raise TypeError
        for sublist in nested:
            for element in flatten(sublist):
                yield element
    except TypeError:
        yield nested
print list(flatten(['foo', ['bar', ['baz']]]))








3.16.yield
3.16.1.Making a Generator
3.16.2.A Recursive Generator
3.16.3.Making It Safer
3.16.4.flatten generator rewritten as a plain function
3.16.5.Fibonacci sequences using generators
3.16.6.Cross-Product Pairs Example
3.16.7.Simple Generator Features
3.16.8.Manually iterating through a generator (or an iterator for that matter):