Создание списка пустых списков в Numba - PullRequest
0 голосов
/ 03 октября 2018

Почему функция foo работает ниже, а бар - нет?Что мне здесь не хватает?

@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 голосов
/ 04 октября 2018

bar создает пустой список.Numba должна определить типы всех переменных, которые используются в режиме nopython для компиляции вашего кода (а njit компилируется только в режиме nopython).Но пустой список не может быть напечатан, так как numba не сможет определить тип элементов, хранящихся в списке (поскольку их нет).Просто попробуйте следующее, чтобы получить более «описательное» сообщение об ошибке:

numba.typeof([])

Если вы используете объектный режим (например, с декоратором jit без указания nopython=True), вы можете использовать нетипизированные объекты python, за счет более медленной производительности исполнения.

...