1. def flatten(items, ignore_types=(str, bytes)):
    2. for x in items:
    3. if isinstance(x, Iterable) and not isinstance(x, ignore_types):
    4. yield from flatten(x)
    5. else:
    6. yield x
    7. items = [1, 2, [3, 4, [5, 6], 7], 8]
    8. for x in flatten(items):
    9. print(x, end='')
    1. >>> 12345678