我可以检测无限嵌套列表吗?
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 列表并在列表的每个元素上重复出现。
你现在可以编码了吗?
我注意到一个有趣的 属性 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 列表并在列表的每个元素上重复出现。
你现在可以编码了吗?