def unseq(seq): return seq[0] if len(seq) == 1 else seq #def flatten(obj): # try: # iter(obj) # except TypeError: # return [obj] # else: # res = [] # for i in obj: # res.extend(flatten(i)) # return res def flatten(obj): return list(iflatten(obj)) def iflatten(obj): try: iterator = iter(obj) except TypeError: yield obj else: for item in iterator: yield from iflatten(item)