En Wed, 12 Aug 2009 19:23:32 -0300, Chris Rebert <c...@rebertia.com> escribió:

On Wed, Aug 12, 2009 at 4:34 PM, jschwab<jsch...@gmail.com> wrote:
<snip>
As a more concrete example, say I have several sets of letters in a
list of strings
    letters = ["aeiou", "hnopty", "egs", "amsp"]
and I wanted to build a regular expression string out of them like
    re_str <==> "[aeiou][hnopty][egs][amsp]"
Right now, the best I've got that doesn't require an explicit string
like "[{1}][{2}][{3}][{4}]" is
    re_str = "".join(map(lambda x: "[{0}]".format(x), letters))

Is there a better way?

Slightly better, by using a generator expression instead of map() and lambda:
re_str = "".join("[{0}]".format(x) for x in letters)

Though obviously MRAB's is shorter (and a good show of lateral thinking).

Another way, using {} auto-numbering (requires Python 3.1 or the future 2.7)

p3> letters = ["aeiou", "hnopty", "egs", "amsp"]
p3> ("[{}]"*len(letters)).format(*letters)
'[aeiou][hnopty][egs][amsp]'


--
Gabriel Genellina

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

Reply via email to