mk wrote:
Hello everybody,
Any better solution than this?
def flatten(x):
res = []
for el in x:
if isinstance(el,list):
res.extend(flatten(el))
else:
res.append(el)
return res
a = [1, 2, 3, [4, 5, 6], [[7, 8], [9, 10]]]
print flatten(a)
It depends on what you mean by "better". More features? Here is the
function from Sage (http://www.sagemath.org), which is a modified
version of a more standard implementation to give a max_level argument.
The first few lines of documentation:
def flatten(in_list, ltypes=(list, tuple), max_level=sys.maxint):
"""
Flattens a nested list.
INPUT:
in_list -- a list or tuple
ltypes -- optional list of particular types to flatten
max_level -- the maximum level to flatten
OUTPUT:
a flat list of the entries of in_list
(lots of examples follow this documentation)
The implementation:
http://www.sagemath.org/hg/sage-main/file/b0aa7ef45b3c/sage/misc/flatten.py
Jason
--
http://mail.python.org/mailman/listinfo/python-list