Тип числового списка N-dimPython

Программы на Python
Anonymous
Тип числового списка N-dim

Сообщение Anonymous »

Как определить тип N-мерного числового списка (тензора) в Python 3.7? Это будет использоваться в качестве одного из реквизитов для базовой модели Pydantic.
Мне бы хотелось что-то вроде

Код: Выделить всё

from typing import List, Union

NumericalList = Union[
int, float,
List[int], List[float],
List[List[int]], List[List[float]],
...
]
n1: NumericalList = [0]
n3: NumericalList = [ [ [0, 1, 2], [1, 1, 2] ],
[ [1, 2, 3], [0, 1, 3] ],
]
Я знаю, что в классах можно писать строковые литералы, чтобы указать, что дочерние элементы относятся к одному и тому же типу. (Или просто добавьте аннотации импорта из __future__.) Мне бы хотелось использовать итерируемый/разрезаемый вариант, а не доступ по реквизитам.
Подумал, что, возможно, рекурсивное определение будет работать, но это не удалось с AttributeError: __forward_arg__ после многих уровней глубокого копирования при вводе модуля.

Код: Выделить всё

NumericalList = Union[int, float, List["NumericalList"]]  # AttributeError: __forward_arg__
Однако обратите внимание, что это не работает при использовании Pydantic, а не в среде IDE Python. Это что-то особенное для Pydantic или это неправильный подход?


Подробнее здесь: https://stackoverflow.com/questions/686 ... -list-type

Вернуться в «Python»