在 numba 中创建一个空列表列表
Creating a list of empty lists in numba
为什么下面的 foo 函数可以工作而 bar one 不能?我在这里错过了什么?
@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)]
bar
创建一个空列表。 numba 需要推断在 nopython
模式下使用的所有变量的类型来编译您的代码(而 njit
仅编译为 nopython 模式)。但是不能键入空列表,因为 numba 无法推断存储在列表中的项目的类型(因为有 none)。只需尝试以下操作以获得更多 "descriptive" 错误消息:
numba.typeof([])
如果您使用对象模式(例如使用 jit
装饰器而不指定 nopython=True
),您可以使用无类型的 python 对象,但代价是执行性能较慢。
为什么下面的 foo 函数可以工作而 bar one 不能?我在这里错过了什么?
@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)]
bar
创建一个空列表。 numba 需要推断在 nopython
模式下使用的所有变量的类型来编译您的代码(而 njit
仅编译为 nopython 模式)。但是不能键入空列表,因为 numba 无法推断存储在列表中的项目的类型(因为有 none)。只需尝试以下操作以获得更多 "descriptive" 错误消息:
numba.typeof([])
如果您使用对象模式(例如使用 jit
装饰器而不指定 nopython=True
),您可以使用无类型的 python 对象,但代价是执行性能较慢。