The "slapping flat" algorithm written by the big guy is worth saving~
from collections import Iterabledef flatten(items, ignore_types=(str, bytes)):for x in items:if isinstance(x, Iterable) and not isinstance(x, ignore_types):yield from flatten(x)else:yield xitems = [1, 2, [3, 4, [5, 6], 7], 8]# Produces 1 2 3 4 5 6 7 8for x in flatten(items):print(x)items = ['Dave', 'Paula', ['Thomas', 'Lewis']]for x in flatten(items):print(x)