我可以检测无限嵌套列表吗?

Can I detect an infinitely nested list?

我注意到一个有趣的 属性 of Python 对象,那就是它们可以自相似。例如,如果您有一个列表并将自身附加到它,您将在列表中的列表中的列表中得到列表中的列表...

x = []
x.append(x)
print(x)   # displayed as "[[...]]"

我的问题是,你能检测列表是否无限嵌套吗?我尝试了 x in x,但这并非万无一失——下面的代码在应该打印 True:

时打印了 False
x = []
x.append(x)
y = [x, x]
print(y in y)

我该如何解决这个问题?

当然可以。编写一个遍历列表的函数,构建在列表中找到的 ID 的引用列表。如果任何 ID 出现在其子列表之一中,则您有无限嵌套。

维护“祖先”ID 列表并在列表的每个元素上重复出现。

你现在可以编码了吗?