Как я могу проверить, существует ли какая-либо из строк в массиве в другой строке?
Как:
a = ['a', 'b', 'c']
str = "a123"
if a in str:
print "some of the strings found in str"
else:
print "no strings found in str"
Тот код не работает, он должен только показать то, чего я хочу достигнуть.
Вы можете использовать any
:
if any(x in str for x in a):
Аналогично, чтобы проверить, найдены ли все строки из списка, используйте all
вместо any
.
a = ['a', 'b', 'c']
str = "a123"
a_match = [True for match in a if match in str]
if True in a_match:
print "some of the strings found in str"
else:
print "no strings found in str"
Вам нужно выполнить итерацию по элементам a.
a = ['a', 'b', 'c']
str = "a123"
found_a_string = False
for item in a:
if item in str:
found_a_string = True
if found_a_string:
print "found a match"
else:
print "no match found"
Вы должны быть осторожны, если строки в a
или str
становятся длиннее. Прямое решение занимает O(S*(A^2)), где S
- длина str
, а A - сумма длин всех строк в a
. Для более быстрого решения посмотрите на алгоритм Aho-Corasick для сопоставления строк, который работает за линейное время O(S+A).