I have a problem and I am trying to find a solution to it that is both efficient and elegant.
I have a list call it 'l': l = ['asc', '*nbh*', 'jlsdjfdk', 'ikjh', '*jkjsdfjasd*', 'rewr'] Notice that some of the items in the list start and end with an '*'. I wish to construct a new list, call it 'n' which is all the members of l that start and end with '*', with the '*'s removed. So in the case above n would be ['nbh', 'jkjsdfjasd'] the following works: r = re.compile('\*(.+)\*') def f(s): m = r.match(s) if m: return m.group(1) else: return '' n = [f(x) for x in l if r.match(x)] But it is inefficient, because it is matching the regex twice for each item, and it is a bit ugly. I could use: n = [] for x in keys: m = r.match(x) if m: n.append(m.group(1)) It is more efficient, but much uglier. Does anyone have a better solution? Thank, -EdK Ed Keith e_...@yahoo.com Blog: edkeith.blogspot.com -- http://mail.python.org/mailman/listinfo/python-list