Python как проверить является ли один список подмножеством другого?

Мне нужно проверить, является ли список подмножеством другого. Результатом должно быть True - если является, а в ином случае - False. Как сделать это быстрее всего? Производительность для меня стоит на первом месте.

Если у Вас set, можно использовать set.issubset, если же список (значения могут повторяться), то кодить ручками алгоритм :slight_smile:
Как вариант:
Сортируете .
Проверяете элемент1 списка1 со значениями списка2.
Если найден - запоминаете позицию и берете следующий элемент из списка1.
Ну, как-то так :slight_smile:
Позиция элемента списка2 изначально 0.
Как найдете - запомните позицию найденного+1
Почему так:
Если список1 = 1, 2, 3, 3, 4
Список2 = 1, 2, 3, 4, 5
то, найдя позицию элемента "3" (поз = 2), и запомнив ее, Вы поиск следующего элемента списка1 начнете с нее, и если элемент повторяется ("3"), то найдете эту же "тройку" в списке2.
Спозиционировав начало поиска на следующий элемент, Вы гарантируете вхождение ВСЕХ элементов списка1.
Ну и проверку на последний элемент делайте, а то за границу выйдете :slight_smile:
Т.е. можно проверять или строгое вхождение (если 2 "тройки в списке1, то 2 " тройки" и в списке2) или просто вхождение элементов списка1 в список2, (если "3" есть там и там, то не важно сколько их там)

1 Вподобання