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

如何用Python递归统计列表元素出现次数?解决变量未定义报错

递归统计列表中目标元素的次数及报错解决

报错原因分析

你遇到的local variable n referenced before assignment错误,本质是else分支里的n未定义就直接执行n+=1——基准条件里的n是该分支下的局部变量,和else分支的n完全无关,Python找不到else分支中n的定义,所以报错。

递归统计的正确思路

递归的核心是拆解问题:当前列表的目标元素数量 = 子列表(去掉第一个元素)的统计结果 + (当前第一个元素是目标则加1,否则加0)。不需要单独维护计数器,直接通过递归调用的返回值完成累加即可。

修正后的代码

基础版本

def rc_count(L, x):
    # 基准条件:空列表没有元素,返回0
    if len(L) == 0:
        return 0
    else:
        # 先获取子列表的统计结果
        sub_total = rc_count(L[1:], x)
        # 加上当前元素的匹配情况(匹配加1,否则加0)
        return sub_total + (1 if L[0] == x else 0)

简洁版本

可以把逻辑合并成一行,更紧凑:

def rc_count(L, x):
    return 0 if not L else rc_count(L[1:], x) + (1 if L[0] == x else 0)

测试验证

调用rc_count([1,2,2,3,2], 2)会返回3,符合预期。

内容的提问来源于stack exchange,提问作者shinny.dogma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 09:45:45