为了账号安全,请及时绑定邮箱和手机立即绑定

多个列表是否唯一的条件

多个列表是否唯一的条件

互换的青春 2021-07-12 12:09:29
我试图寻找答案,但找不到正确的答案。所以让我们说我有这个: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 个列表是唯一的?
查看完整描述

3 回答

?
蛊毒传说

TA贡献1895条经验 获得超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

如果您需要一些其他的独特定义,那么您需要更清楚地了解您的要求。


查看完整回答
反对 回复 2021-07-28
?
茅侃侃

TA贡献1842条经验 获得超21个赞

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


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 


查看完整回答
反对 回复 2021-07-28
?
跃然一笑

TA贡献1826条经验 获得超6个赞

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.")


查看完整回答
反对 回复 2021-07-28
  • 3 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信