2015-07-13 2 views
1

мой вопрос в значительной степени, как указано выше:Как проверить, находятся ли все элементы в списке в списке? Python

Если у вас есть 2 списка, как показано ниже, как вы можете проверить, находятся ли все элементы в первом списке во втором списке. например

list_one=[1,2,3] 
list_two=[1,2,3,4] 

моя нынешняя попытка просто «если все list_one в list_two:»

, но это условие кажется, никогда не будет заполнен, и поэтому больше ничего не происходит. Любая помощь была бы оценена спасибо :)

+0

связаны: http://stackoverflow.com/questions/16579085/python-verify-if-one-list-is-a-subset-of-the-other – NightShadeQueen

ответ

2

Функция all() используется, чтобы проверить, выполнены ли все условия. Мы получаем элементы из списка_1 и проверяем, доступно ли это в списке_2, если все доступно, тогда мы печатаем «да»,

list_one=[1,2,3] 
list_two=[1,2,3,4] 
if all(a in list_two for a in list_one): 
    print "yes" 
+1

Вы можете явно выйти из цикла с 'break' при поиске условия остановки или использовать цикл while, предикат которого включает в себя остановка состояние. – TigerhawkT3

+0

yeas @ TigerhawkT3 – The6thSense

0
>>> l1 = [1,2,3,4,5] 
>>> l2 = [3,2,1,5,4] 
>>> for i in l1: 
... if i not in l2: 
...  print('doh') 
0

Вы можете проверить для отдельных элементов в list_one.

count=0 
for i in list_one: 
    if i in list_two: 
     count += 1 

    if count==len(list_one): 
     print("All items covered!") 
1

Вы можете использовать all с выражением генератора, это позволит короткое замыкание на нахождение первого элемента, который не происходит в вашем втором списке.

>>> list_one=[1,2,3] 
>>> list_two=[1,2,3,4] 
>>> all(i in list_two for i in list_one) 
True 
0

Я просто создаю разницу наборов и проверяю длину.

assert len(set([1,2,3]) - set([1,2,3,4])) == 0 

Обратите внимание, что в логическом контексте пустые наборы (например, любые другие контейнеры) являются falsy, так что вы можете просто так что-то вроде:

if set(seq1) - set(seq2): 
    do_something() 
Смежные вопросы