我尝试寻找答案,但找不到正确的答案。 所以说我有这个:
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
如何比较这四个列表是唯一的?
答案 0 :(得分:0)
如果通过 unique 来表示在每个位置中都不包含相同的值,那么类似的方法应该起作用:
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
如果您需要 unique 的其他定义,则需要更清楚地询问您的要求。
答案 1 :(得分:0)
由于顺序无关紧要,您可能需要对子列表进行排序,然后检查其中一组是否与原始排序列表的长度相同:
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
答案 2 :(得分:-1)
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.")
答案 3 :(得分:-1)
我通常不喜欢轮船,但我认为这应该可行:
if (tuple(c1) != tuple(c2) != tuple(c3) != tuple(c4)):
print 'All are unique!'
else:
raise 'Oh no, they are not all unique!'