tiissa wrote: > I'd personnally extract the parenthesis then zip the lists of indices. > In short: > > >>> def indices(mylist): > ... lopen=reduce(list.__add__, [[i]*s.count('(') for i,s in > enumerate(mylist)],[]) > ... lclose=reduce(list.__add__, [[i]*s.count(')') for i,s in > enumerate(mylist)],[]) > ... return zip(lopen,lclose) > ... > >>> indices(lst) > [(2, 2), (4, 7), (6, 7), (8, 9), (8, 10)] > >>>
Thanks, that's a good idea. In case anyone else is reading this thread, and had to mentally unwrap the reduce expressions, I believe they could be written as: lopen = [x for i, s in enumerate(lst) for x in [i]*s.count('(')] lclose = [x for i, s in enumerate(lst) for x in [i]*s.count(')')] or maybe: lopen = [i for i, s in enumerate(lst) for _ in xrange(s.count('('))] lclose = [i for i, s in enumerate(lst) for _ in xrange(s.count(')'))] Sorry, I have an irrational fear of reduce. ;) STeVe -- http://mail.python.org/mailman/listinfo/python-list