Есть простым способ преобразованияПреобразовать из кортежа кортежей вложенных кортежей в Python
t = ((1,), (1, 2), (1, 2, 3), (1, 2, 3, 4), (1, 2, 3, 4, 5))
следующей рекурсивную структуру, где каждый следующий кортеж добавленная в качестве элемента предшествующего кортежа
(1, (1, 2, (1, 2, 3, (1, 2, 3, 4, (1, 2, 3, 4, 5)))))
Каков предел для этого гнездования? Могу ли я иметь 1000 или 10000 таких вложенных кортежей?
ОБНОВЛЕНИЕ: Кажется, что t
вложенность неограничена (проверено с 10000 после установки предела рекурсии до 100).
В окне 7, Python 3.5) предел рекурсии составляет около 300, но может быть поднят как (reference). Это не связано со структурой t
, но может быть связано с подпрограммой Python, доступ к вложенным уровням результирующей структуры.
sys.getrecursionlimit() # display current recursion level
sys.setrecursionlimit(10000) # set recursion level to 1000
предел рекурсии вы упомянули связан с рамками Nember стеки мы можем использовать, то есть речь идет о том, как глубоко рекурсивные вызовы функций могут идти. Это совершенно не связано с тем, насколько глубоко вы можете вставлять кортежи, подобные этому, и я ожидаю, что он неограничен (за исключением доступной памяти). – wim
Замечательная заметка! Я обновил вопрос. Однако я сталкиваюсь с проблемой ограничения рекурсии, когда я запускаю код Дэвида и отображаю «результат». Смотрите мой комментарий к Дэвиду. –