решение зависит от того, какие значения вы ожидаете от своих списков.
если есть возможность повторения значения, и вам нужно проверить, достаточно ли значений в тестируемом контейнере, то вот неэффективное по времени решение:
def contained(candidate, container):
temp = container[:]
try:
for v in candidate:
temp.remove(v)
return True
except ValueError:
return False
проверить эту функцию с помощью:
>>> a = [1,1,2,3]
>>> b = [1,2,3,4,5]
>>> contained(a,b)
False
>>> a = [1,2,3]
>>> contained(a,b)
True
>>> a = [1,1,2,4,4]
>>> b = [1,1,2,2,2,3,4,4,5]
>>> contained(a,b)
True
Конечно, это решение может быть значительно улучшено: list.remove () потенциально занимает много времени и его можно избежать с помощью умной сортировки и индексации. но я не вижу, как избежать петли здесь ...
(в любом случае, любое другое решение будет реализовано с использованием наборов или списочных представлений, которые используют циклы внутренне ...)