猿问

多个列表是否唯一的条件

我试图寻找答案,但找不到正确的答案。所以让我们说我有这个:


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 个列表是唯一的?


互换的青春
浏览 143回答 3
3回答

蛊毒传说

如果通过unique您的意思是在每个 position 中不包含相同的值,那么这样的事情应该可以工作: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如果您需要一些其他的独特定义,那么您需要更清楚地了解您的要求。

茅侃侃

由于顺序无关紧要,您可能希望对子列表进行排序,然后检查其中一组是否与排序列表的原始列表具有相同的长度: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 

跃然一笑

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.")
随时随地看视频慕课网APP

相关分类

Python
我要回答