vowels = {"a", "e", "i", "o", "u", "A", "E", "I", "O", "U"}
if any(char in vowels for char in word):
...
注意:这更好,因为它会在找到单词中的元音后立即短路。因此,除非字符串中没有元音,否则不必检查所有字符。
编辑:运行timeit test 并发现@falsetru's answer 非常快,但几乎没有优化,re 版本优于其他所有版本。
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")