例如list=[[1,2,3,4],[2,3,4,0],[5,6,7,8],[1,9,a,b],[a,c,d,e]]
[1,2,3,4]与[2,3,4,0]比较,其中有重复的内容是2,3,4有3个,[1,2,3,4]与[5,6,7,8]比重复内容为0个
我要输出重复数为1个的,则会输出[1,2,3,4]和[1,9,a,b],且重复部分为1;
[1,9,a,b]和[a,c,d,e],且重复部分为a;
重复数为0个则会输出[5,6,7,8]
假设list中有N个list,请不要因为例子把语句写死
代码写的差不多了,但是还有最后一步,怎么把一个重复数都没有的找出来,目前正在解决,这步就交给你解决吧,如果对你有用,希望点击右上角给个采纳哦~
l =[[1,2,3,4],[2,3,4,0],[5,6,7,8],[1,9,'a','b'],['a','c','d','e']]
for i in l:
if l.index(i)==0:
for s in l[1:]:
a=set(s)&(set(i))
for k in a:
if a:
if len(a)==1:
print("找到一个重复数:%s"%list(a)[0])
print(s)
print(i)
else:
a=l.index(i)
for s in l[a+1:]:
b=list(set(s)&set(i))
for k in b:
if b:
if len(b)==1:
print("找到一个重复数:%s"%list(b)[0])
print(s)
print(i)
有一个地方没有看懂,重复数为0个时凭借什么条件输出5,6,7,8呢
你是想知道某个元素重复多少次吗?建议使用Counter
from collections import Counter
li = [1, 2, 3, 4, 2, 3, 4, 0, 5, 6, 7, 8, 1, 9, 'a', 'b', 'a', 'c', 'd', 'e']
print(Counter(li))
# Result: Counter({1: 2, 2: 2, 3: 2, 4: 2, 'a': 2, 0: 1, 5: 1, 6: 1, 7: 1, 8: 1, 9: 1, 'b': 1, 'c': 1, 'd': 1, 'e': 1})
# 上面字典中的键是元素,字典值为该元素出现的次数
lst=[[1,2,3,4],[2,3,4,0],[5,6,7,8],[1,9,'a','b'],['a','c','d','e']]
res = list()
for tp in list(combinations(lst, 2)):
s = set(tp[0]) & set(tp[1])
if len(s) == 0:
continue
if len(s) == 1: # 重复为1个的
print(tp[0], tp[1], s.pop())
res.append(tp[0])
res.append(tp[1])
for t in lst:
if t not in res:
print(t) # 重复为0个的