Какой лимит вложенности списков в питоне?

Какой лимит вложенности списков в питоне? Или его вообще нет?


Ответы (1 шт):

Автор решения: dofi4ka

У списка нет лимита вложенности.

Массив хранит элементы на одном участке памяти. Список - массив который хранит ссылки на другие участки памяти.


В книге Fluent Python присутствует наглядный пример:

В контейнерных последовательностях хранятся ссылки на объекты любого типа, когда как в плоских последовательностях - сами значения прямо в памяти, занятой последовательностью, а не как отдельные объекты Python.

Пример из fluent Python

... Закрашенные ячейки представляют заголовок объекта Python в памяти - пропорции не соблюдены. В кортеже хранится массив ссылок на элементы. Каждый элемент - отдельный объект Python, быть может, содержащий ссылки на другие объекты, скажем список из двух элементов. ...


Чтобы добавить уровень вложенности в:

  • Массив, нужны функции для расчёта адреса в памяти каждого элемента.
  • Список, укажите ссылку на другой список.

Доказательство - список который хранит ссылку на себя же:

self_pointing_list = []
self_pointing_list.append(self_pointing_list)

Проверим:

>>> self_pointing_list is self_pointing_list[0]
True
>>> self_pointing_list is self_pointing_list[0][0]
True

Единственное ограничение, с которым можно столкнутся - ограничение памяти.

→ Ссылка