计算Python中列表中重复的元素总数
我想问一下,如何计算Python中重复的元素总数 比如说 输入:[1,2,2,3,4,4,5,6,7]计算Python中列表中重复的元素总数,python,list,duplicates,Python,List,Duplicates,我想问一下,如何计算Python中重复的元素总数 比如说 输入:[1,2,2,3,4,4,5,6,7] 输出:2(因为有2个元素是重复的2和4)不完全清楚您想要的是重复的元素数还是重复的元素数。如果希望元素与其他元素重复,可以转换为set并获得差异,如注释中所示。(我在lst中添加了另一个4,以说明差异。) 但是,我认为您需要具有重复项的元素的数量,这需要更多的参与。您可以只计算每个唯一元素出现的频率,但这将具有复杂性O(n²)。这对于短列表是可以的,但对于包含数千个元素的列表则不太好 >
输出:2(因为有2个元素是重复的2和4)不完全清楚您想要的是重复的元素数还是重复的元素数。如果希望元素与其他元素重复,可以转换为
set
并获得差异,如注释中所示。(我在lst
中添加了另一个4
,以说明差异。)
但是,我认为您需要具有重复项的元素的数量,这需要更多的参与。您可以只计算每个唯一元素出现的频率,但这将具有复杂性O(n²)。这对于短列表是可以的,但对于包含数千个元素的列表则不太好
>>> sum(1 for x in set(lst) if lst.count(x) > 1)
2
相反,我建议使用collections.Counter
(或者只是一个dict
和一个for
循环)来计算每个元素出现的频率,然后得到O(n)中计数>1的元素
如果对列表中的元素进行了排序,您也可以在O(n)中使用itertools.groupby
,但我仍然希望使用更明确的计数器
>>> from itertools import groupby
>>> sum(1 for k, g in groupby(lst) if len(list(g)) > 1)
2
在一个列表中获取所有重复项,从新列表中删除重复项,然后获取长度
l = [1,2,2,3,4,4,5,6,7]
m = set([x for x in l if l.count(x) >1])
print(len(m))
此问题中没有任何重复项len(arr)-len(set(arr))
。应该有许多重复项。有关堆栈溢出的问题。是否进行了一些搜索?是否要重复的元素数,或重复的元素数?也就是说,[x,x,x]
的预期结果是1
还是2
?另一个这样做的结果:sum(np.unique(arr,return\u counts=True)[1]>1
。无论如何,我个人更喜欢@jizhaosama提供的
>>> from itertools import groupby
>>> sum(1 for k, g in groupby(lst) if len(list(g)) > 1)
2
l = [1,2,2,3,4,4,5,6,7]
m = set([x for x in l if l.count(x) >1])
print(len(m))