有没有更简洁的方法可以写这个功能? Python中的某种东西,比如标准库中的函数,还是一种奇特的语法特征?
def is_separator(char):
x = ['(', '\'', ')', '{', '}', '[', ']']
for c in x:
if char == c:
return True
return False
我考虑过使用字典,但我想有更好的方法吗?我尝试了char in "(\){}[]"
,但这只是返回false。到目前为止,上述情况是我最好的尝试。
答案 0 :(得分:2)
你可以摆脱for
循环并执行:
return char in x
答案 1 :(得分:1)
{'(', '\'', ')', '{', '}', '[', ']'}
。这样,你得到O(1)而不是O(n)。if char in x
适用于套装所以
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