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

**URL:** <https://forum.itvdn.com/t/python-kak-proverit-yavlyaetsya-li-odin-spisok-podmnozhestvom-drugogo/3233>\
**Category:** Python Developer\
**Created:** [17.02.2019 23:11:51 UTC](https://forum.itvdn.com/t/python-kak-proverit-yavlyaetsya-li-odin-spisok-podmnozhestvom-drugogo/3233 "2019-02-17T23:11:51Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jackie](https://forum.itvdn.com/letter_avatar_proxy/v4/letter/j/f07891/32.png) [@Jackie](https://forum.itvdn.com/u/Jackie)\
**Post date:** [17.02.2019 23:11:51 UTC](https://forum.itvdn.com/t/python-kak-proverit-yavlyaetsya-li-odin-spisok-podmnozhestvom-drugogo/3233/1 "2019-02-17T23:11:51Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Prospero2005](https://forum.itvdn.com/user_avatar/forum.itvdn.com/prospero2005/32/342_2.png) [@Prospero2005](https://forum.itvdn.com/u/Prospero2005)\
**Post date:** [18.02.2019 18:41:37 UTC](https://forum.itvdn.com/t/python-kak-proverit-yavlyaetsya-li-odin-spisok-podmnozhestvom-drugogo/3233/2 "2019-02-18T18:41:37Z")

</div>

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