我试过这个,因为一些未知的原因,当它打印h时,它打印无,所以我想如果它计算无打印的数量然后除以2它将给出重复的数量,但我不能使用函数计数这里
a= [1,4,"hii",2,4,"hello","hii"]
def duplicate(L):
li=[]
lii=[]
h=""
for i in L:
y= L.count(i)
if y>1:
h=y
print h
print h.count(None)
duplicate(a)
答案 0 :(得分:1)
使用Counter
容器:
from collections import Counter
c = Counter(['a', 'b', 'a'])
c
现在是一个包含数据的字典:Counter({'a': 2, 'b': 1})
如果您想获得包含所有重复元素的列表(不重复),您可以执行以下操作:
duplicates = filter(lambda k: c[k] > 1, c.iterkeys())
如果您只想计算重复项,则可以设置
duplicates_len = len(duplicates)
答案 1 :(得分:0)
您可以使用set
获取唯一元素的数量,然后比较尺寸 - 类似:
def duplicates(l):
uniques = set(l)
return len(l) - len(uniques)
答案 2 :(得分:-1)
egualo的答案要好得多,但这是使用字典的另一种方式。
def find_duplicates(arr):
duplicates = {}
duplicate_elements = []
for element in arr:
if element not in duplicates:
duplicates[element] = False
else:
if duplicates[element] == False:
duplicate_elements.append(element)
duplicates[element] = True
return duplicate_elements
它非常简单,并且没有两次通过列表,这很好。
>> test = [1,2,3,1,1,2,2,4]
>> find_duplicates(test)
[1, 2]
答案 3 :(得分:-1)
我找到了答案
a= [1,4,"hii",2,4,"hello",7,"hii"]
def duplicate(L):
li=[]
for i in L:
y= L.count(i)
if y>1:
li.append(i)
print len(li)/2
duplicate(a)