Условие, если несколько списков уникальны - PullRequest
0 голосов
/ 24 октября 2018

Я пытался найти ответ, но не смог найти правильный.Допустим, у меня есть это:

list=['f','f','f','f','r','r','r','r','b','b','b','b','l','l','l','l','t','t','t','t',
      'u','u','u','u']
c1=[list[0],list[13],list[18]]
c2=[list[1],list[4],list[19]]
c3=[list[5],list[8],list[17]]
c4=[list[9],list[12],list[16]]

#if c1,c2,c3,c4 are unique
#do something

Как сравнить, что эти 4 списка уникальны?

Ответы [ 4 ]

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

Я обычно не фанат одного лайнера, но я считаю, что это должно работать:

if (tuple(c1) != tuple(c2) != tuple(c3) != tuple(c4)):
    print 'All are unique!'
else:
    raise 'Oh no, they are not all unique!'
0 голосов
/ 24 октября 2018
if max(len(c1), len(c2)) != len(set(c1) & set(c2))\
        and max(len(c1), len(c3)) != len(set(c1) & set(c3))\
        and max(len(c1), len(c4)) != len(set(c1) & set(c4))\
        and max(len(c2), len(c3)) != len(set(c2) & set(c3))\
        and max(len(c3), len(c4)) != len(set(c3) & set(c4)):
    print("Do something.")
else:
    print("Do something else.")
0 голосов
/ 24 октября 2018

Поскольку порядок не имеет значения, вы можете отсортировать подсписки, а затем проверить, имеет ли набор из них ту же длину, что и исходный список отсортированных списков:

ordered = [tuple(sorted(l)) for l in [c1, c2, c3, c4]]
# [('f', 'l', 't'), ('f', 'r', 't'), ('b', 'r', 't'), ('b', 'l', 't')]

unique = len(set(ordered)) == len(ordered)
# True 
0 голосов
/ 24 октября 2018

Если под уникальным вы имеете в виду , не содержат идентичные значения в каждой позиции , то должно сработать что-то подобное:

if len(set(map(tuple, [c1, c2, c3, c4]))) == 4:
  # All four lists are unique

Обратите внимание, что в этомсценарий, [1,2] и [2,1] различны.Если для ваших целей это будет то же самое, тогда вы захотите это:

if len(set(map(frozenset, [c1, c2, c3, c4]))) == 4:
  # All four lists are unique

Если вам нужно какое-то другое определение уникального , то вам нужно быть более ясным вчто ты спрашиваешь.

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