Python 安全地比较深度嵌套列表?

Python 安全地比较深度嵌套列表?,python,stack-overflow,Python,Stack Overflow,以下纯列表的简单比较在我身上爆炸: a, b = [], [] for _ in range(1000): a, b = [a], [b] a == b Python 3.5.1: Traceback (most recent call last): File "<pyshell#17>", line 1, in <module> a == b RecursionError: maximum recursion depth exceeded in c

以下纯列表的简单比较在我身上爆炸:

a, b = [], []
for _ in range(1000):
    a, b = [a], [b]
a == b
Python 3.5.1:

Traceback (most recent call last):
  File "<pyshell#17>", line 1, in <module>
    a == b
RecursionError: maximum recursion depth exceeded in comparison
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
a==b
RecursionError:比较中超出了最大递归深度
Python 2.7.11:

Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    a == b
RuntimeError: maximum recursion depth exceeded in cmp
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
a==b
运行时错误:cmp中超过最大递归深度
语言/库是否提供了一种安全的方法来比较这些嵌套很深的列表,还是我必须编写自己的迭代比较代码


编辑:我被要求解释为什么我的问题不是重复的。这并不是因为它是关于无限嵌套的,也不是因为我不要求解释(我已经理解了),而是因为Python是否提供了一个简单的解决方案。

你真的有嵌套超过1000层的列表吗?这听起来本身就是个问题。如果这是一个真实的情况,你知道你需要什么样的递归深度,并且你有理由确信你的机器可以处理这样的深度,你可以增加最大递归深度。@Falmari不,我实际上没有这个,当我注意到上面的方法不起作用时,我很好奇。但是我不明白为什么一个1000层或更多层的嵌套结构通常会是个问题。@TigerhawkT3对我来说这不是一个“真实”的情况,我只是好奇。在最近一个关于递归列表比较函数的问题中,有人评论说教授不应该用它来教授递归,因为它应该以迭代的方式进行。然后我测试了上面的内容,发现Python本身也是递归的。我没有费心告诉他们,但这激发了我的好奇心。@StefanPochmann有趣的发现。当我自己在shell中检查这一点时,
似乎也是递归实现的。