Сравнение списков, поиск части элемента
Сравниваю два списка:
app_list = ['word', 'port']
new_list = ['word list', 'port world']
if any(x in app_list for x in new_list):
print("Списки list1 и list2 имеют общие элементы")
else:
print("Списки list1 и list2 не имеют общих элементов")
Результат:
Списки list1 и list2 не имеют общих элементов
Ищу 'word' в элементе второго списка 'word list':
app_list = ['*word*', 'port']
new_list = ['word list', 'port world']
if any(x in app_list for x in new_list):
print("Списки list1 и list2 имеют общие элементы")
else:
print("Списки list1 и list2 не имеют общих элементов")
Результат точно такой же:
Списки list1 и list2 не имеют общих элементов
Думал '*' любое количество любых символов.
Ответы (1 шт):
any(x in app_list for x in new_list):
Тут вы ищите строку в списке -> 'word' in ['word list', 'port world']
-> таким образом будет произведено сопоставление всех элементов списка со строкой 'word', что естественно вернёт False так как строки 'word' в списке нет.
Вам же нужно искать вхождение подстроки в строке -> 'word' in 'word list'
-> True
Для приведения строки к нижнему регистру, можно воспользоваться методом .lower()
'Word'.lower()
-> 'word' ->'Word'.lower() in 'woRd list'.lower()
-> True
Пример:
app_list = ['worD', 'port']
new_list = ['wOrd list', 'port World']
if any(app_string.lower() in new_string.lower() for app_string in app_list for new_string in new_list):
print("Списки list1 и list2 имеют общие элементы")
else:
print("Списки list1 и list2 не имеют общих элементов")
Вывод:
Списки list1 и list2 имеют общие элементы
[Program finished]