>>> from itertools import chain>>> chain.from_iterable([1])<itertools.chain object at 0x00000112D332BF98>>>> list(_)Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: 'int' object is not iterable
>>> chain.from_iterable([[[1, 2]], [[4, 5]]])<itertools.chain object at 0x00000112D3330B00>>>> list(_)[[1, 2], [4, 5]]
def flatten(iterables, unpack=(list, tuple, set), peep=(list, tuple, set)):
for element in iterables:
try:
if isinstance(element, unpack):
if isinstance(element, peep):
yield from flatten(element, unpack=unpack, peep=peep)
else:
yield from flatten(element, unpack=(), peep=())
elif isinstance(element, peep):
yield type(element)(flatten(element, unpack=unpack, peep=peep))
else:
raise TypeError
except TypeError:
yield element