为什么foo函数不能正常工作,而bar却不能工作?我在这里想念什么?
@numba.njit
def foo(x):
return [[i for i in range(0)] for _ in range(x)]
@numba.njit
def bar(x):
return [[] for _ in range(x)]
答案 0 :(得分:2)
-H
创建一个空列表。 numba需要推断在bar
模式下用于编译代码的所有变量的类型(而nopython
仅编译为nopython模式)。但是不能键入一个空列表,因为numba无法推断存储在列表中的项目的类型(因为没有)。只需尝试以下操作即可获得更具“描述性”的错误消息:
njit
如果使用对象模式(例如,使用numba.typeof([])
装饰器而未指定jit
),则可以使用无类型的python对象,但会降低执行性能。