【问题标题】:Is the "char in string" python method efficient?“字符串中的字符”python方法有效吗?
【发布时间】:2020-03-15 13:49:45
【问题描述】:

Python 内置的查找子字符串的方法是否足够有效地查找字符匹配?我在某处读到,即使找到匹配项,它也会继续循环遍历字符串直到最后,但无法在互联网上找到相关信息。 这种方法在 Python 3.7 中实际上是否有效,或者我应该像这样编写自己的函数(或者也许有更有效的方法?):

def char_in_str(char:str, string:str):
    for i in string:
        if i == char:
            return True
    return False

【问题讨论】:

  • in 运算符短路。它完成了您上面的功能基本上可以完成的工作。
  • “我在某处读过”不是您声明的好来源。问问自己:如果存在更好的方法,为什么编写 Python 解释器的人会实施一种缓慢的方法?

标签: python python-3.x substring


【解决方案1】:

那肯定会短路(只要你点击return,功能就完成了;它不能继续寻找)。请注意,有效的实施方式是:

def char_in_str(char:str, string:str):
    return char in string

或者如果您只希望它在 char 实际上是一个长度为一的字符串时成功:

def char_in_str(char:str, string:str):
    return len(char) == 1 and char in string

在这两种情况下,in 运算符在找到匹配项时都会短路,并且与您的代码不同,在解释器本身(在 CPython 中,在 C 中)实现的实现比 Python 级别循环更有效.

【讨论】:

    猜你喜欢
    • 2012-09-15
    • 1970-01-01
    • 2022-01-26
    • 2012-01-05
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多