如何比较列表中的一个项目与此列表中的所有其他项目python

man*_*ing 8 python

我有一个这样的列表:

 all = [[a,b,c,d],[r,d,g,s],[e,r,a,b],[p,o,i,u]....(more similar items)]
Run Code Online (Sandbox Code Playgroud)

我想有多少个项目是其中一样的,所以我需要比较all[0]all[1],all[2]...all[(len(all)-1)],然后用all[1]与比较all[2],all[3]...all[(len(all)-1)],然后all[2]与比较all[3],all[4],...all[(len(all)-1)]

我试过这样的事情:

 for i in range(len(all)):
     print len(all[i] & all[i+1]) ##how many identical items shared by all[0] and all[1]
     print len(all[i+1] & all[i+2])
Run Code Online (Sandbox Code Playgroud)

但不知道如何继续,我想得到的结果是:

item1 has 3 same values with item2, 
      has 4 same values with item3,
      has 1 same values with item4....

item2 has 3 same values with item1,
      has 2 same values with item3,
      etc
Run Code Online (Sandbox Code Playgroud)

std*_*err 5

这里最简单的算法是 an^2。只需将列表循环两次即可:

for x, left in enumerate(all):
    for y, right in enumerate(all):
        common = len(set(left) & set(right))
        print "item%s has %s values in common with item%s"%(x, common, y)
Run Code Online (Sandbox Code Playgroud)