如果我有一個collection of strings
是否有一個數據結構或函數可以提高檢查集合中的任何元素是否爲主串中的substrings
?Python3快速的方法來查找如果集合中的任何元素是字符串的子串
現在我正在循環訪問我的字符串數組並使用in
運算符。有更快的方法嗎?
import timing
## string match in first do_not_scan
## 0:00:00.029332
## string not in do_not_scan
## 0:00:00.035179
def check_if_substring():
for x in do_not_scan:
if x in string:
return True
return False
## string match in first do_not_scan
## 0:00:00.046530
## string not in do_not_scan
## 0:00:00.067439
def index_of():
for x in do_not_scan:
try:
string.index(x)
return True
except:
return False
## string match in first do_not_scan
## 0:00:00.047654
## string not in do_not_scan
## 0:00:00.070596
def find_def():
for x in do_not_scan:
if string.find(x) != -1:
return True
return False
string = '/usr/documents/apps/components/login'
do_not_scan = ['node_modules','bower_components']
for x in range(100000):
find_def()
index_of()
check_if_substring()
有沒有可能在這裏粘貼了一些錯誤。或者'string ='a''只是一個示例。因爲'node_modules'永遠不會出現在'string'中。這就是說,你可以使用地圖。鑰匙是「do_not_scan」的項目。然後搜索是O(1) – Cripto
只是一個示例來演示'string'可能不包含'do_not_scan'的任何元素。我以前從未使用過地圖,你會怎麼做呢? – ClickThisNick
你想要'grep -l -Ff collections_of_strings main_string'的模擬嗎?其中'collections_of_strings'文件包含字符串集合(每行一個),'main_string'文件包含主字符串(按原樣)。 – jfs