# Replace this with a more sophisticated test if you prefer def flattenable(o): return type(o) == list def flatten(x, b = None): if b is None: b = [] for i in x: if flattenable(i): flatten(i, b) else: b.append(i) return b def flatten_generator(x): for i in x: if flattenable(i): for j in flatten(i): yield j else: yield i Jeff