* pyt...@bdurham.com <pyt...@bdurham.com> [2009-02-16 00:17:37 -0500]:
> I need to test strings to determine if one of a list of chars is > in the string. A simple example would be to test strings to > determine if they have a vowel (aeiouAEIOU) present. > I was hopeful that there was a built-in method that operated > similar to startswith where I could pass a tuple of chars to be > tested, but I could not find such a method. > Which of the following techniques is most Pythonic or are there > better ways to perform this type of match? > # long and hard coded but short circuits as soon as match found > if 'a' in word or 'e' in word or 'i' in word or 'u' in word or > ... : > -OR- > # flexible, but no short circuit on first match > if [ char for char in word if char in 'aeiouAEIOU' ]: > -OR- > # flexible, but no short circuit on first match > if set( word ).intersection( 'aeiouAEIOU' ): I would go for something like: for char in word: if char in 'aeiouAEIUO': char_found = True break else: char_found = False (No, I did not forget to indent the else statement, see http://docs.python.org/reference/compound_stmts.html#for) It is clear (imo), and it is seems to be the intended idiom for a search loop, that short-circuits as soon as a match is found. Cheers, -- Nicolas Dandrimont linux: the choice of a GNU generation (k...@cis.ufl.edu put this on Tshirts in '93)
signature.asc
Description: Digital signature
-- http://mail.python.org/mailman/listinfo/python-list