Какой лимит вложенности списков в питоне?
Какой лимит вложенности списков в питоне? Или его вообще нет?
Ответы (1 шт):
У списка нет лимита вложенности.
Массив хранит элементы на одном участке памяти. Список - массив который хранит ссылки на другие участки памяти.
В книге Fluent Python присутствует наглядный пример:
В контейнерных последовательностях хранятся ссылки на объекты любого типа, когда как в плоских последовательностях - сами значения прямо в памяти, занятой последовательностью, а не как отдельные объекты 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
Единственное ограничение, с которым можно столкнутся - ограничение памяти.