These functions come from goopy:

def flatten1(seq):
 """
Return a list with the contents of SEQ with sub-lists and tuples "exploded".
 This is only done one-level deep.
 """

 lst = []
 for x in seq:
   if type(x) is list or type(x) is tuple:
     for val in x:
       lst.append(val)
   else:
     lst.append(x)
 return lst

def flatten(seq):
 """
 Returns a list of the contents of seq with sublists and tuples "exploded".
 The resulting list does not contain any sequences, and all inner sequences
 are exploded.  For example:

 >>> flatten([7,(6,[5,4],3),2,1])
 [7,6,5,4,3,2,1]
 """
 lst = []
 for el in seq:
   if type(el) == list or type(el) is tuple:
     lst.extend(flatten(el))
   else:
     lst.append(el)
 return lst




Brian Allen Vanderburg II wrote:
mrk...@gmail.com 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)


[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Regards,
mk

--
http://mail.python.org/mailman/listinfo/python-list

I think it may be just a 'little' more efficient to do this:

def flatten(x, res=None):
   if res is None:
      res = []

   for el in x:
      if isinstance(el, (tuple, list)):
         flatten(el, res)
      else:
         res.append(el)

   return res

Brian Vanderburg II
--
http://mail.python.org/mailman/listinfo/python-list



--
Shane Geiger, IT Director
Council For Economic Education / www.councilforeconed.org
sgei...@councilforeconed.org  / 402-438-8958

Teaching Opportunity

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to