В исследуемом списке 'Ярославский', 'Тамбов', 'Белгород', 'тамбовский' надо выявить Тамбов и Курск) во всех видах.
Скажем, в whitelist есть слова ["амбо", "урск"]
Я сделал функцию, которая пробегает whitelist на вхождение по аргументу функции, и потом ее маплю на исследуемый список.
whitelist = ['Курск','Тамбов']
income = ['Ярославский', 'Тамбов', 'Белгород', 'тамбовский']
def test_whitelist(string: str, whitelist: list = whitelist):
"""
:return bool: True if any element from whitelist is in string
:param string: str
:param whitelist: list of 'good' words
"""
result = False
for good_word in whitelist:
if good_word.lower() in string.lower():
result = True
return result
print(income, '\n', list(map(test_whitelist, income)))
['Ярославский', 'Тамбов', 'Белгород', 'тамбовский']
[False, True, False, True]
Вроде как работает. Но это хорошо, когда списки маленькие. А если не маленькие? Как можно находить частичные вхождения из одних больших списков в других больших списках более элегантно?
Всякие re лучше не предлагать без крайней необходимости - я в них могу, но в данном случае хотелось бы иметь просто списки, а не списки специфических паттернов.