On Mon, Dec 15, 2008 at 11:06 AM, Reckoner <recko...@gmail.com> wrote: > Hi, > > I have lists of the following type: > > [1,2,3,[5,6]] > > and I want to produce the following strings from this as > > '0-1-2-3-5' > '0-1-2-3-6' > > That was easy enough. The problem is that these can be nested. For > example: > > [1,2,3,[5,6],[7,8,9]] > > which should produce > > '0-1-2-3-5-7' > '0-1-2-3-5-8' > '0-1-2-3-5-9' > '0-1-2-3-6-7' > '0-1-2-3-6-8' > '0-1-2-3-6-9' > > also, > > [1,2,3,[5,6],7,[9]] > > should produce > > '0-1-2-3-5-7-9' > '0-1-2-3-6-7-9' > > obviously, these are nested loops over the lists. The problem is that > I don't know ahead of time how many lists there are or how deep they > go. In other words, you could have: > > [1,2,3,[5,6,[10, 11]],7,[9,[1, 2, 3, 4, 5 ]]] > > Any help appreciated. I've really been having trouble with this. > > I hope that made sense.
You just need a recursive list-flattening function. There are many recipes for these. Here's mine: def flatten(lst): if isinstance(lst, list): result = [] for item in lst: result += flatten(item) return result else: return [lst] >>> flattened = flatten([1,2,3,[5,6,[10, 11]],7,[9,[1, 2, 3, 4, 5 ]]]) >>> flattened [1, 2, 3, 5, 6, 10, 11, 7, 9, 1, 2, 3, 4, 5] >>> '-'.join(str(num) for num in flattened) '1-2-3-5-6-10-11-7-9-1-2-3-4-5' Cheers, Chris -- Follow the path of the Iguana... http://rebertia.com -- http://mail.python.org/mailman/listinfo/python-list