在numba中创建一个空列表的列表

时间:2018-10-03 02:28:33

标签: python numba

为什么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)]

1 个答案:

答案 0 :(得分:2)

-H创建一个空列表。 numba需要推断在bar模式下用于编译代码的所有变量的类型(而nopython仅编译为nopython模式)。但是不能键入一个空列表,因为numba无法推断存储在列表中的项目的类型(因为没有)。只需尝试以下操作即可获得更具“描述性”的错误消息:

njit

如果使用对象模式(例如,使用numba.typeof([]) 装饰器而未指定jit),则可以使用无类型的python对象,但会降低执行性能。