You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python for循环统计列表各数字出现次数并生成计数列表

问题分析

你当前编写的代码存在两处核心逻辑错误:

  • 仅对同步递增的索引i和q对应的元素做对比,只能匹配相邻相等的元素,无法统计全列表内同一个数字的总出现次数
  • 每次匹配成功就直接向结果列表追加计数,输出列表长度和原列表一致,并非去重后的各数字计数结果
实现思路

在不使用count()、collections.Counter等现成计数工具的前提下,仅用for循环实现的步骤如下:

  1. 遍历原列表,筛选出所有不重复的数字
  2. 对每一个不重复的数字,再次遍历全列表统计它的出现次数
  3. 把所有统计到的次数汇总为最终的计数列表
可运行代码实现
def countlisting(numberlist):
    # 第一步:用for循环实现去重,获取所有不重复数字
    unique_nums = []
    for num in numberlist:
        exist_flag = False
        for existed in unique_nums:
            if num == existed:
                exist_flag = True
                break
        if not exist_flag:
            unique_nums.append(num)
    
    # 第二步:统计每个不重复数字的出现次数
    count_result = []
    for target in unique_nums:
        cnt = 0
        for num in numberlist:
            if num == target:
                cnt += 1
        count_result.append(cnt)
    return count_result

the_numberlist = [9,18,13,9,6,6,16,6,17,10,15,16,13,11,13,8,20,6,18,11]
print(countlisting(the_numberlist))

运行后输出为:[2, 2, 3, 4, 2, 1, 1, 1, 2, 1, 1],和预期输出格式一致,对应去重后每个数字的出现次数。


内容的提问来源于stack exchange,提问作者August

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 05:39:05