不使用内置函数构建自定义计数器函数

2024-04-25 22:21:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个密码:

L = [1, 4, 7, 5, 5, 4, 5, 1, 1, 1]

def frequency(L):
    counter = 0
    number = L[0]
    for i in L:
        amount_times = L.count(i)
        if amount_times > counter:
            counter = amount_times
            number = i
    return number

print(frequency(L))

但我不想使用计数器函数。我想让代码在没有任何内置函数的情况下运行。我该怎么做?你知道吗


Tags: 函数in密码numberforreturnifdef
2条回答

如果你真的想重新发明collections.Counter,不管有没有list.count,这都是可能的。然而,我看不出任何理由。你知道吗

使用list.count,您可以使用字典理解。这是低效的,因为每个变量只传递一次列表。你知道吗

def frequency2(L):
    return {i: L.count(i) for i in set(L)}

如果您不想使用list.count,可以使用if/else

def frequency3(L):
    d = {}
    for i in L:
        if i in d:
            d[i] += 1
        else:
            d[i] = 0
    return d

然后提取最高计数:

maxval = max(d.values())
res = [k for k, v in d.items() if v == maxval]

你可以试试这个。不确定你是否接受这个。你知道吗

这将在不使用内置项的情况下查找列表中最常出现的项:

L = [1, 4, 7, 5, 5, 4, 5, 1, 1, 1]

def frequency(L):
    count, item = 0, ''
    d = {i:0 for i in L}
    for i in L[::-1]:
         d[i] = d[i] + 1
         if d[i] >= count :
             count = d[i]
             item = i
    return item

print(frequency(L))
# 1

相关问题 更多 >

    热门问题