Python Проверьте, содержит ли двумерный список номера другого списка - PullRequest
0 голосов
/ 07 февраля 2019

Я хочу знать, содержит ли список числа из списка, но все, что я пробовал, работало так, как я хотел.Например, если список из списка в list2 = [[1,2,3], [4,5,6]] находится в list1 = [4, 5, 6, 7], он должен вывести True, потому что числаиз list1 - это целый список из list2.Так как list1 содержит числа 4, 5, 6, вывод должен быть True.

Вот что я пробовал

for i in range(len(list2)):
    if list1 in list2[i]:
        print('True')
    else:
        print('False')

Он печатает False два раза (но мне нужно его напечататьправда) и я понимаю, почему

[1, 2, 3] in [1, 2, 3, 4]
>>> False

Есть ли способ избежать этого?Или я должен просто использовать строки, так как они отлично работают с ними?

1 Ответ

0 голосов
/ 07 февраля 2019

Обнаружение того, является ли коллекция элементов подмножеством другого, более эффективно обрабатывается set, чем list.Преобразование вашего списка в набор позволяет осуществлять быстрый поиск по методу set.issuperset.

list_of_lists = [[1,2,3],[4,5,6]]
list1 = [4, 5, 6, 7]

list1_as_set = set(list1)

result = any(list1_as_set.issuperset(l) for l in list_of_lists) # True

Приведенный выше код с использованием any эквивалентен этому решению с использованием цикла for.

for l in list_of_lists:
    if list1_as_set.issuperset(l):
        result = True
        break
else:
    result = False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...