Я очікував, що array.arrayце буде швидше, ніж списки, оскільки масиви, здається, не є коробками.
Однак я отримую такий результат:
In [1]: import array
In [2]: L = list(range(100000000))
In [3]: A = array.array('l', range(100000000))
In [4]: %timeit sum(L)
1 loop, best of 3: 667 ms per loop
In [5]: %timeit sum(A)
1 loop, best of 3: 1.41 s per loop
In [6]: %timeit sum(L)
1 loop, best of 3: 627 ms per loop
In [7]: %timeit sum(A)
1 loop, best of 3: 1.39 s per loop
Що може бути причиною такої різниці?
arrayпакет. Якщо ви хочете зайнятись великою кількістю математики, Numpy працює зі швидкістю світла (тобто С), і, як правило, краще, ніж наївні реалізації подібних речей sum()).
arrayдосить швидко в перетворенні рядка цілих чисел (що представляють ASCII байти) в strоб'єкт. Сам Гвідо придумав це лише після багатьох інших рішень і був дуже здивований виступом. У всякому разі, це єдине місце, де я пам’ятаю, як бачив, що це корисно. numpyнабагато краще для роботи з масивами, але це стороння залежність.