Сравнить / найти список во вложенных списках другого списка - PullRequest
0 голосов
/ 06 октября 2018

У меня есть несколько списков под названием find.Я хочу знать, являются ли эти find частью full_list.Списки find 1-4 являются частью full_list, в то время как списки find 5-7 не являются.

В приведенном ниже примере возвращается "Yes".

find1 = [[1, 1]]
find2 = [[1, 1], [2, 2]]
find3 = [[1, 1], [3, 3]]
find4 = [[4, 4], [2, 2], [3, 3]]

find5 = [[1, 0]]
find6 = [[1, 1], [2, 0]]
find7 = [[1, 1], [3, 0]]

full_list = [[1, 1], [2, 2], [3, 3], [4, 4]]

if find2[0] in full_list and find2[1] in full_list:
    print("Yes")
else:
    print("No")

Поскольку len(find2) != len(find4), текущий if утверждение очень неуклюжее и почти бесполезное.

Как сделать эту работу более универсальной?

Ответы [ 3 ]

0 голосов
/ 06 октября 2018

Попробуйте это:

set1 = set(find1)
full_set = set(full_list)
if set1.issubset(full_set):
    print("Yes")
else:
    print("No")
0 голосов
/ 06 октября 2018

Вы можете настроить функцию для обработки всех этих, все упомянутые методы будут работать, просто отображая другие опции, вы можете использовать filter и сравнить lens, а также

def is_in_full(k):
    l = list(filter(lambda x: x in k, full_list))
    if len(l) == len(k):
        return 'Yes'
    else:
        return 'No'

print(is_in_full(find1))
# Yes
0 голосов
/ 06 октября 2018

Вы можете использовать all() с генератором, который возвращает True, если все верно, или False:

if all(x in full_list for x in find2):
    print("Yes")
else:
    print("No")

# => prints Yes

Этот тип является общим, просто нужно изменить find2 налюбой список, который вы должны проверить с full_list.

...