更简洁的方法来检查一个字符是否等于Python中的一组给定字符?

时间:2015-07-08 02:29:49

标签: python

有没有更简洁的方法可以写这个功能? Python中的某种东西,比如标准库中的函数,还是一种奇特的语法特征?

def is_separator(char):
    x = ['(', '\'', ')', '{', '}', '[', ']']
    for c in x:
        if char == c:
            return True
    return False

我考虑过使用字典,但我想有更好的方法吗?我尝试了char in "(\){}[]",但这只是返回false。到目前为止,上述情况是我最好的尝试。

4 个答案:

答案 0 :(得分:2)

你可以摆脱for循环并执行:

return char in x

答案 1 :(得分:1)

  1. 将您的x存储为set。所以{'(', '\'', ')', '{', '}', '[', ']'}。这样,你得到O(1)而不是O(n)。
  2. if char in x适用于套装
  3. 所以

    sep = {'(', '\'', ')', '{', '}', '[', ']'}
           #initializing on the outside so it's not created
           #every time the function is called. 
           #initializing a set is O(n). Indexing into it is O(1)
    def is_sep(char, sep):
        return char in sep 
    

答案 2 :(得分:0)

你不需要使用列表

并且它也被认为是一种类似

的反模式
def check():
    if condition:
       return True
    else:
       return False

因为你可以做到

def check():
    return condition

所有这些......我想你可能正在寻找

is_sep = lambda char:char in r"(\){}[]"

可能就是你要找的......我猜

def is_sep(char):
    return char in r"(\){}[]"

如果您的字符集很大,那么最好使用set ...如果您要搜索大量文字,则可能会更好地使用

parts = re.split(r"[(\){}[]]",my_complete_text)

答案 3 :(得分:0)

这是最快的方式:

def is_separator(char):

    x = ['(', '\'', ')', '{', '}', '[', ']']

    return char in x