`list1 = [[1, 2, 3], [4, 5, 6]]
 list2 = [1 ,8 ,7 ,2, 0, 3]`

Вывод должен сказать, что list2 содержит все целые числа в одном из подсписок list1.

-2
shadowlegend551 9 Окт 2021 в 22:35

2 ответа

Лучший ответ

Если ни в одном списке нет дубликатов:

s2 = set(list2)
result = any(all(e in s2 for e in sub) for sub in list1)

Если могут быть дубликаты и вам нужно, чтобы все вхождения появлялись в list2, вы можете использовать collections.Counter:

from collections import Counter

c2 = Counter(list2)
result = any(not (Counter(sub) - c2) for sub in list1)
1
schwobaseggl 9 Окт 2021 в 19:43

Версия, учитывающая дубликаты:

from collections import Counter

list_1 = [[1, 2, 3], [4, 5, 6]]
list_2 = [1, 8, 7, 2, 0, 3]

counts = Counter(list_2)
res = any(len(Counter(e) - counts) == 0 for e in list_1)
print(res)

Вывод

True
3
Dani Mesejo 9 Окт 2021 в 19:45