【发布时间】:2019-02-04 23:54:49
【问题描述】:
我正在尝试构建此函数,但我不知道如何停止该函数多次计算相同的重复项。有人可以帮帮我吗?
def count_duplicates(seq):
'''takes as argument a sequence and
returns the number of duplicate elements'''
fir = 0
sec = 1
count = 0
while fir < len(seq):
while sec < len(seq):
if seq[fir] == seq[sec]:
count = count + 1
sec = sec + 1
fir = fir + 1
sec = fir + 1
return count
在:count_duplicates([-1,2,4,2,0,4,4])
输出:4
这里失败了,因为输出应该是3。
【问题讨论】:
-
你如何定义“重复元素的数量”? 2号有两次,4号有3次。你在计算最频繁元素的出现次数吗?
-
您尝试过使用
Counter了吗? -
@AlexTaylor 和 zvone 有一个重复的 2 和两个重复的 4,总共是 3。
-
@zvone 如果相同的值在一个序列中出现多次,我将调用它的所有副本,除了第一个:重复。
-
因此,如果您通过
count_duplicates和seq或[1,1,1,1],它将返回 3+2+1=6。您可以通过将break放在count = count + 1行之后,仅计算每个项目的第一个重复项来解决此问题。但最好使用一种更有效的技术。
标签: python list count duplicates sequence