首页 > 解决方案 > 当列表中没有值时,list.count() 表示 1

问题描述

我正在尝试计算列表 A" 中从 1 到 N 的所有元素的频率。我必须在 O(1) 空间内执行此操作,这就是为什么我将计数值附加到同一个列表中。我是新来的问题- 在 python 中求解。

def printfrequency(A,N):
#Your Code here
lis = []

for i in range(1,N+1):
    if i in A:
        A.append(A.count(i))
    else:
        A.append(0)       
for i in A[-N:]:
    print(i,end=" ")

此代码为输入提供了错误的值

N = 9

A = [9,2,5,7,9,2,2,1,4]

输出 --> 1 3 1 1 1 0 1 0 2

预期 --> 1 3 0 1 1 0 1 0 2

这适用于某些输入,例如

N = 2

A = 2 3 2 3 5

输出 --> 0 2 2 0 1

预期 --> 0 2 2 0 1

标签: pythonarrayslistcount

解决方案


要计算其中的值,A您不应再将任何值附加到A. 而是使用lis您在那里创建的变量。例如,像这样

def printfrequency(A,N):
    #Your Code here
    lis = []

    for i in range(1,N+1):
        if i in A:
            lis.append(A.count(i))
        else:
            lis.append(0)       
    for i in lis:
        print(i, end=" ")

推荐阅读