Comprobar la presencia de las vocales en palabra, python.

Necesito verificar si una vocal está presente en una palabra. si es así, se debe realizar una operación con la palabra decir op (palabra). Quiero evitar un bucle for porque pensé en esto:

for char in word: if char in 'aeiou': #confused here... 

Recomiende un método que sea de bajo costo cuando se trata del tiempo de ejecución. También me ayudan a corregir el enfoque anterior también.

 vowels = {"a", "e", "i", "o", "u", "A", "E", "I", "O", "U"} if any(char in vowels for char in word): ... 

Nota: Esto es mejor porque se corta, tan pronto como encuentra la vocal en la palabra. Por lo tanto, no tiene que verificar todos los caracteres a menos que no haya vocales en la cadena.

Edición: timeit una prueba timeit y descubrí que, la respuesta de @ falsetru es extremadamente rápida, pero con pocas optimizaciones, la re versión supera a todo lo demás.

 import re vowels = {"a", "e", "i", "o", "u", "A", "E", "I", "O", "U"} pattern = re.compile("[AEIOUaeiou]") def intersection(): return bool(vowels.intersection("TWYNDYLLYNGS")) def any_version(): return any(char in vowels for char in "TWYNDYLLYNGS") def re_version(): return bool(pattern.search("TWYNDYLLYNGS")) def disjoint(): return vowels.isdisjoint("TWYNDYLLYNGS") from timeit import timeit print timeit("intersection()", "from __main__ import intersection, vowels") print timeit("any_version()", "from __main__ import any_version, vowels") print timeit("re_version()", "from __main__ import re_version, vowels") print timeit("disjoint()", "from __main__ import disjoint, vowels") 

Puedes evitar el bucle for usando una set intersection

 if set('aeiou').intersection(word.lower()): 

Usando set.isdisjoint (este método devuelve tan pronto como encuentra coincidencia):

 >>> vowels = set('aeiou') # set('aeiouAEIOU') if you want case-insensitivty >>> not vowels.isdisjoint('bcd') False >>> not vowels.isdisjoint('hello') True 

Podrías usar expresiones regulares.

 import re if re.search('[AEIOU]', word, flags=re.I): # contains vowels else: # does not 
 def vowelz(a): vowels = ["a", "e", "i", "o", "u"] vowel = False for vowell in vowels: if vowell in a: vowel = True print vowel vowelz(raw_input("Enter a word:"))