проверить, если ВСЕ элементы одного списка есть в элементе второго списка, то вывести элемент второго списка
Текст задания: На вход программе подается натуральное число n, затем n строк, затем число k — количество поисковых запросов, затем k строк — поисковые запросы. Напишите программу, которая выводит все введенные строки, в которых встречаются ВСЕ поисковые запросы. Моя логика: считываю всю информацию, создаю два списка. Далее нужно пробежаться через цикл и проверить если ВСЕ элементы одного списка есть в элементе второго списка, то вывести элемент второго списка. Застрял на последнем этапе. Заранее спасибо.
q = []
k = []
for i in range(n):
a = input()
q.append(a)
m = int(input())
for i in range(m):
b = input()
k.append(b)
flag = False
for i in range(len(k)):
for j in range(len(q)):
if k[i] in q[j]:
flag = True```
Ответы (3 шт):
Похоже, нужна логика примерно такая:
for s in strings: # введённые строки
flag = True
for q in queries: #запросы
if not (q in s): #если хоть один запрос не найден
flag = False
break #ловить больше нечего
if flag:
print(s)
можно так
def my_fun(n):
my_list = []
for i in range(n):
el_lista = input()
my_list.append(el_lista)
return(my_list)
q = my_fun(int(input()))
k = my_fun(int(input()))
for i in range(len(k)):
if k[i] in q:
flag = True
else:
flag = False
break
if flag:
print(k)
Для разнообразия вот ещё через list comprehension и с использованием встроенной функции all, зря её что ли придумали:
texts = ['Наш паровоз вперёд летит', 'Однажды в студёную зимнюю пору', 'Однажды паровоз летит вперёд внезапно']
query = ['Однажды', 'паровоз', 'внезапно']
print([t for t in texts if all(q in t for q in query)])
Вывод:
['Однажды паровоз летит вперёд внезапно']