在Python中从元组元组转换为嵌套元组

Ole*_*kov 4 python algorithm recursion data-structures python-3.x

有一种简单的转换方式

t = ((1,), (1, 2), (1, 2, 3), (1, 2, 3, 4), (1, 2, 3, 4, 5))
Run Code Online (Sandbox Code Playgroud)

到下面的递归结构,其中每个后续元组作为前一元组的元素被附加

(1, (1, 2, (1, 2, 3, (1, 2, 3, 4, (1, 2, 3, 4, 5)))))
Run Code Online (Sandbox Code Playgroud)

这种嵌套的限制是什么?我可以拥有1000或10000个这样的嵌套元组吗?

更新:似乎t嵌套是无限的(在将递归限制设置为100后尝试使用10000).

在Window 7上,Python 3.5)最初的递归限制大约为300,但可以作为(引用)提升.这与结构无关t,但可能与Python例程访问结果结构的嵌套级别有关.

sys.getrecursionlimit()   # display current recursion level
sys.setrecursionlimit(10000)  # set recursion level to 1000
Run Code Online (Sandbox Code Playgroud)

fal*_*tru 6

使用functools.reduce:

>>> from functools import reduce
>>> t = ((1,), (1, 2), (1, 2, 3), (1, 2, 3, 4), (1, 2, 3, 4, 5))
>>> reduce(lambda a, b: b + (a,), reversed(t), ())
(1, (1, 2, (1, 2, 3, (1, 2, 3, 4, (1, 2, 3, 4, 5)))))
Run Code Online (Sandbox Code Playgroud)

  • 我在等待减少答案.实际减少*的几次之一是*适当的. (2认同)