# Program to flatten an arbitrarily nested list. def nested_item(depth, value): if depth <= 1: return [value] else: return [nested_item(depth - 1, value)] def nested_list(n): """Generate a nested list where the i'th item is at depth i.""" lis = [] for i in range(n): if i == 0: lis.append(i) else: lis.append(nested_item(i, i)) return lis def flatten(lis): """Given a list, possibly nested to any level, return it flattened.""" new_lis = [] for item in lis: if type(item) == type([]): new_lis.extend(flatten(item)) else: new_lis.append(item) return new_lis for n in range(7): print n, lis = nested_list(n) print "original:", lis new_lis = flatten(lis) print "flattened:", new_lis print for i in range(6): lis = range(i) print "orig:", lis flat_lis = flatten(lis) print "flat:", flat_lis