Как эффективно инициализировать массив array.array определенной длины в Python - PullRequest
0 голосов
/ 26 января 2020

Рассматривая доступные способы инициализации array.array в Python, выясняется, что каждый из них либо полагается сначала на создание отдельного списка объектов, либо на предоставление итерируемого, который, вероятно, может потребовать перераспределения и копирования кучи, возможно, нескольких раза при добавлении значений.

Есть ли способ выделить хранилище один раз для нового array.array экземпляра заданной длины c без предварительного выделения какой-либо другой коллекции той же длины?

1 Ответ

0 голосов
/ 27 января 2020

Хотя в документации для array.array в настоящее время не упоминаются операторы сложения или умножения, оказывается, что array.array поддерживает их, поэтому…

Наиболее простые (и, по-видимому, эффективные) средства инициализации Большой экземпляр с одинаковым значением в каждом элементе, по-видимому, должен создать экземпляр с длиной 1 и умножить его на необходимое количество элементов.

a = array('h', [0]) * 50000
print(len(a))

Вывод:

50000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...