On Jul 25, 10:33 am, Jeff <[EMAIL PROTECTED]> wrote: > def flatten(obj): > if type(obj) not in (list, tuple, str): > raise TypeError("String, list, or tuple expected in > flatten().") > if len(obj) == 1: > if type(obj[0]) in (tuple, list): > return flatten(obj[0]) > else: > return [obj[0]] > else: > return [obj[0]] + flatten(obj[1:])
This seems to work fine only if the last object is the only one with the tuple or list. For example: >>> y = [(1,2),3,4] >>> y [(1, 2), 3, 4] >>> print flatten(y) [(1, 2), 3, 4] if the last line is changed to return flatten([obj[0]]) + flatten(obj[1:]) then it will unpack tuples/lists anywhere in the main collection being flattened: >>> y [(1, 2), 3, 4] >>> flatten(y) [1, 2, 3, 4] >>> z = [1,(2,3),4] >>> flatten(z) [1, 2, 3, 4] >>> x [1, 2, (3, 4)] >>> flatten(x) [1, 2, 3, 4] >>> k = [(1,2),(3,4)] >>> flatten(k) [1, 2, 3, 4] -- http://mail.python.org/mailman/listinfo/python-list