«Это зависит». Python выделяет пространство для списков таким образом, чтобы достичь амортизированного постоянного времени для добавления элементов в список.
На практике это означает, что в текущей реализации ... в списке всегда есть место, выделенное для числа степеней двух. Таким образом, диапазон (1000000) фактически выделит список, достаточно большой, чтобы вместить 2 ^ 20 элементов (~ 1,045 миллиона).
Это только пространство, необходимое для хранения самой структуры списка (который представляет собой массив указателей на объекты Python для каждого элемента). 32-битная система потребует 4 байта на элемент, 64-битная система будет использовать 8 байтов на элемент.
Кроме того, вам нужно место для хранения фактических элементов. Это широко варьируется. Для маленьких целых чисел (от -5 до 256 в настоящее время) дополнительное пространство не требуется, но для больших чисел Python выделяет новый объект для каждого целого числа, которое занимает 10-100 байт и имеет тенденцию фрагментировать память.
Итог: это сложно и списки Python не хороший способ хранения больших однородных структур данных. Для этого используйте модуль array
или, если вам нужно сделать векторизованную математику, используйте NumPy.
PS. В отличие от списков, кортежи не предназначены для постепенного добавления к ним элементов. Я не знаю, как работает распределитель, но даже не думаю об использовании его для больших структур данных: -)