ЯЛ
Size: a a a
ЯЛ
VA
>>> import re
>>> import timeit
>>> find = ['foo', 'bar', 'baz']
>>> pattern = re.compile("|".join(find))
>>> with open('c:\\temp\\words.txt', 'r') as f:
words = f.readlines()
>>> len(words)
235882
>>> timeit.timeit('r = filter(lambda w: any(s for s in find if w.find(s) >= 0), words)', 'from main import find, words', number=30)
18.404569854548527
>>> timeit.timeit('r = filter(lambda w: any(s for s in find if s in w), words)', 'from main import find, words', number=30)
10.953313759150944
>>> timeit.timeit('r = filter(lambda w: pattern.search(w), words)', 'from main import pattern, words', number=30)
6.8793022576891758
ЯЛ
from timeit import timeit
import re
pattern = 'sed'
text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod' \
'tempor incididunt ut labore et dolore magna aliqua.'
compiled_pattern = re.compile(pattern)
def find():
assert text.find(pattern) > -1
def re_search():
assert re.search(pattern, text)
def re_compiled():
assert re.search(compiled_pattern, text)
def in_find():
assert pattern in text
print('str.find ', timeit(find))
print('re.search ', timeit(re_search))
print('re (compiled)', timeit(re_compiled))
print('in ', timeit(in_find))
str.find 0.5998420439999999
re.search 1.9794073379999997
re (compiled) 2.856282504
in 0.36060479999999906
$
a
ЯЛ
$
$
I
VA
VA
БГ
$
VA
VA
VA
$
БГ
$