您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

检查字符串中是否存在元音

检查字符串中是否存在元音

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

这样比较好,因为它会在单词中找到元音后立即短路。因此,除非字符串中没有元音,否则不必检查所有字符。

一个timeit测试,发现@falsetru的答案非常快,但是经过很少的优化,该re版本胜过其他所有功能

使用set.isdisjoint(此方法找到匹配项后立即返回):

>>> vowels = set('aeIoU') # set('aeIoUAEIoU') if you want case-insensitivty
>>> not vowels.isdisjoint('bcd')
False
>>> not vowels.isdisjoint('hello')
True
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")
其他 2022/1/1 18:33:14 有597人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶