如何计算列表中一个数字的数量

时间:2019-06-08 15:10:44

标签: python

我需要在Python中知道如何计算列表中数字的数量,例如:

l = [0,1,2,5,6,5,0,0,0]

如果区域是3:

三个数字区域中的最大零个数为3(末尾)

(必须这样计数:0; 1; 2:一个零,1; 2; 5没有零,2; 5; 6没有零...)

(此练习的目标是在数字列表中由int(input())确定的区域中打印最大数量的零)

谢谢您的帮助!

这是我学校的作业,在数学上,我们用Python进行练习

2 个答案:

答案 0 :(得分:1)

尝试一下:

L = [0,1,2,5,6,5,0,0,0]
print([x.count(0) for x in zip(L,L[1:],L[2:])])

作为更通用的解决方案,对于可变值和可变区域大小,可以使用以下方法:

def getCount(arr,val,zone):
    z = [arr[n:] for n in range(zone)]
    return [x.count(val) for x in zip(*z)]

然后,您可以执行以下操作:

countArr = getCount(arr=[0,1,2,5,6,5,0,0,0],val=0,zone=3)
print(countArr)
print(max(countArr))

答案 1 :(得分:0)

您有一个名为l的列表,您必须取消清除区域,它可能会更改。 另外,如果您要搜索除search_number之外的其他变量,我还添加了0变量

l = [0,1,2,5,6,5,0,0,0]
zone = 3
search_number = 0

现在,您应该将列表分为几类

clusterlist = []
for index in range(l.__len__()):
    clusterlist.append(l[index:zone+index])

您拥有群集列表,例如0,1,21,2,5max_cluster_have_zeros将保存群集中最大零个计数。 save_cluster将存储包含最大零的群集。

save_cluster = None
max_cluster_have_zeros = 0
for cluster in clusterlist:
    cluster_have_zeros = cluster.count(search_number)
    if (max_cluster_have_zeros < cluster_have_zeros):
        max_cluster_have_zeros = cluster_have_zeros
        save_cluster = cluster