2010-07-12 2 views

ответ

4
import sys 

print sys.maxsize 
# prints some system-dependent number representing the maximum 
# size most containers can hold. 

Python sys module

Я подозреваю, на большинстве платформ, sys.maxsize будет возвращать то же значение, как sys.maxint (который гарантированно будет по крайней мере 2 ** 31-1), но я сомневаюсь, что это гарантировано.

+0

Хороший ответ, насколько это возможно, но максимальный * размер контейнера * не переводится непосредственно на максимальное количество * элементов, которые он может удерживать. Вам нужно много узнать о внутреннем представлении. Но даже если вы это сделали, точное значение не стоит беспокоиться, потому что это, безусловно, будет намного больше, чем у вас есть RAM. Например. на 64-битном компьютере я набираю это, 'sys.maxsize == 2 ** 63 - 1', но * аппаратное обеспечение * не может обрабатывать более 2 ** 48 байт ОЗУ. – zwol

+0

@ Zack: Да, 'sys.maxsize' сообщает вам, сколько элементов Python _capable_ индексации в контейнере (вот почему я подозреваю, что это, как правило, то же значение, что и' sys.maxint'). Но вы также правы, что только потому, что Python знает, как использовать многие индексы, это не значит, что ваш компьютер может хранить эту информацию в самом контейнере. –

0

Если вы имеете в виду, что такое максимальный размер кортежа или списка, я предполагаю, что он очень большой. Скорее всего, у вас не хватит памяти, прежде чем нанести какой-то лимит. Кто-то может добавить к этому, если у них есть конкретные знания об индексировании, возможно 2,1 или 4,2 млрд. Элементов в 32-битных и 8 или 16 секстиллированных в 64-битных.

3

Вы можете попробовать это самостоятельно, в интерактивном режиме в интерпретаторе Python:

>>> tuple([0] * 10000) 
(0, 0, 0, ... 0, 0) 

где ... представляет 9995 нули.

Смежные вопросы