Мне нужно написать плагин для приложения, которое можно расширять с помощью Python 2.7. Он должен выполнять довольно сложный динамический алгоритм, который работает с матрицей целых чисел.
Установка Python по умолчанию, поставляемая с этим приложением, не включает в себя числовую библиотеку, такую как numpy, поэтому, к сожалению, я должен реализовать это, используя только Python stdlib.
Я попробовал несколько разных подходов для представления матрицы в памяти:
values = defaultdict(int)
values = [[0 for _ in range(width)] for _ in range(height)]
values = [0] * (width * height) # access like values[j*width + i] later
values = [[0] * width for _ in range(height)]
Диктовый подход существует только для полноты, на самом деле он не очень полезен, потому что к каждому элементу обращаются.
Судя по моим измерениям, последний из них кажется самым быстрым для сборки и доступа. Тем не менее, я удивлен, что нет встроенной функциональности матрицы. Из того, что я узнал о Python до сих пор, если вы не найдете какой-либо очевидной функциональности в stdlib, наиболее вероятной причиной является то, что вы не выглядели достаточно усердно.
Так что мне интересно, можно ли еще оптимизировать это, например, с помощью модуля array
или какой-либо другой функции, о которой я не знаю.