python – 在多个列表中查找重复值

我试图找出list1中的任何子列表是否有重复值,所以我需要告诉我list1 [0]中的数字是否与list [1]中的数字相同(重复20)

数字代表coords,list1中每个项目的coords不能超过圈数,如果他们这样做,那么我有一个模块重新运行一个新的列表1直到没有coords是smae

请帮忙

    list1 = [[7, 20], [20, 31, 32], [66, 67, 68],[7, 8, 9, 2],
             [83, 84, 20, 86, 87], [144, 145, 146, 147, 148, 149]]

    x=0
    while x != 169:
        if list1.count(x) > 0:
        print ("repeat found")
    else:
        print ("no repeat found")
    x+=1
最佳答案
怎么样的:

is_dup = sum(1 for l in list1 if len(set(l)) < len(l))
if is_dup > 0:
  print ("repeat found")
else:
  print ("no repeat found")

另一个使用any的例子:

any(len(set(l)) < len(l) for l in list1)

为了检查在所有列表中是否只重复了一个项目,我会链接它们并检查.归功于this answer,用于展平列表清单.

flattened = sum(list1, [])
if len(flattened) > len(set(flattened)):
  print ("dups")
else:
  print ("no dups")

我想平整列表的正确方法是使用itertools.chain,可以这样使用:

flattened = list(itertools.chain(*list1))

这可以取代我上面使用的总和调用,如果这似乎是一个黑客.

转载注明原文:python – 在多个列表中查找重复值 - 代码日志