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

Python全局列表无法追加值:调用列表返回空列表求助

问题排查与解决

核心原因:函数未被执行

如果只定义了Ocurrencias函数,但从未传入有效参数调用它(比如Ocurrencias(你的Datos数据)),那三个全局列表den、num_p、num_end自然会是空的。这是最常见的触发场景。

输入参数异常的情况

如果传入的Datos是空列表,或者每个元素分割后得到的episodios总长度小于4,第二个for循环(range(0, len(episodios)-3,4))会直接跳过,此时denominador、nominador_p、nominador_e会保持初始值0,但代码依然会把这三个0追加到列表中。如果连0都没出现,还是函数未被调用的问题。

验证方法

添加测试调用和打印语句,确认函数执行情况:

# 构造测试数据
test_datos = ["state1,play,play,10", "state2,continue,end,0"]
# 调用函数
Ocurrencias(test_datos)
# 打印列表查看结果
print(den, num_p, num_end)

额外优化建议

  • 避免使用全局变量:全局变量会增加代码维护难度,建议将计算结果作为返回值,在调用时手动追加到列表:
def Ocurrencias(Datos):
    episodios = []
    # 移除global声明
    for item in Datos:
        x = item.split(',')
        episodios.extend(x)
    denominador = 0
    nominador_p = 0
    nominador_e = 0
    for i in range(0, len(episodios)-3,4):
        denominador += 1
        if 'play' in episodios[i+2]:
            nominador_p += 1
        else:
            nominador_e += 1
    x = f"Veces que ocurre (play, continue) : {denominador}"
    y = f"Veces que ocurre (play, continue, play) : {nominador_p}"
    z = f"Veces que ocurre (play, continue, end)  : {nominador_e}"
    w = f"Probabilidad de (play, continue, play)  : {nominador_p/denominador if denominador !=0 else 0} "
    # 返回计算结果
    return x, y, z, w, denominador, nominador_p, nominador_e

# 调用时处理列表
den = []
num_p = []
num_end = []
x,y,z,w,d,p,e = Ocurrencias(test_datos)
den.append(d)
num_p.append(p)
num_end.append(e)
  • 移除冗余代码:原代码中episodios[i]、episodios[i+1]、episodios[i+3]这些行没有实际作用,可直接删除。
  • 处理除零异常:添加判断避免denominador为0时的报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 20:15:09