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

如何在Numba中使用嵌套列表?解决反射列表弃用报错

解决Numba嵌套列表索引的报错问题

报错原因

你遇到的reflected list警告,是因为直接用List(a)创建嵌套列表时,内部的子列表还是Python原生列表,Numba将其识别为计划废弃的"reflected list"类型,这种类型性能差且不稳定。

修复步骤

1. 正确创建嵌套的Typed List

需要把每个子列表先转换成numba.typed.List,再构建外层的Typed List,确保所有层级都是Numba可识别的类型。

2. 修正函数逻辑错误

你的foo函数中,return False写在了循环内部,导致循环只执行一次就返回,无法遍历所有子列表,需要把它移到循环结束后。

修正后的完整代码

from numba import njit
from numba.typed import List

@njit
def foo(b):
    for y in range(len(b)):  # 用len(b)代替固定值3,适配不同长度的输入
        if b[y][0] == 1:
            return True
    return False  # 移到循环外部,遍历完所有元素再返回

# 正确创建嵌套Typed List
a = [[1, 2, 3], [1, 1, 1]]
typed_a = List()
for sublist in a:
    typed_sublist = List(sublist)
    typed_a.append(typed_sublist)

print(foo(typed_a))  # 输出True

额外建议

如果你的嵌套列表中每个子列表的长度固定,优先使用numpy数组,Numba对numpy的支持更完善,性能也更优:

import numpy as np
from numba import njit

@njit
def foo(b):
    for y in range(b.shape[0]):
        if b[y][0] == 1:
            return True
    return False

a = np.array([[1, 2, 3], [1, 1, 1]])
print(foo(a))  # 输出True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:45:26