Как я могу проверить, содержит ли список другой список с определенными элементами в Python? - PullRequest
4 голосов
/ 05 ноября 2010

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

Все должно быть ясно из этого примера:

list = [[1,2],[3,4],[4,5],[6,7]]
for test in [[1,1],[1,2],[2,1]]:
  if test in list:
    print True
  else:
    print False

#Expected:
#        False
#        True
#        True

#Reality:
#        False
#        True
#        False

Есть ли функция, которая сравнивает элементы списка независимо от того, как они отсортированы?

Ответы [ 3 ]

6 голосов
/ 05 ноября 2010

То, что вы хотите использовать, является набором: set([1,2]) == set([2,1]) возвращает True.

Итак,

list = [set([1,2]),set([3,4]),set([4,5]),set([6,7])]
set([2,1]) in list

также возвращает True.

5 голосов
/ 05 ноября 2010

Если они действительно наборы, используйте тип набора

# This returns True 
set([2,1]) <= set([1,2,3])

<= означает «является подмножеством» при работе с наборами. Подробнее см. операции над наборами типов .

1 голос
/ 05 ноября 2010

если вы хотите получить [1,2] = [2,1], вам не следует использовать список. Установите правильный тип. В списке порядок компонентов имеет значение, а в наборе - нет. Вот почему вы не получаете «False True True».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...