【发布时间】:2019-12-14 17:15:27
【问题描述】:
我正在尝试使用递归编写嵌套结构比较。看起来很基本但不起作用:当我比较 len(original) 和 len(other) 它们是不同的,但它不是 return False。为什么?
def same_structure_as(original,other):
if type(original) != type(other) or len(original) != len(other):
return False
for i in range(len(original)):
if type(original[i]) != type(other[i]):
return False
if type(original[i]) is list and type(other[i]) is list:
same_structure_as(original[i],other[i])
return True
print (same_structure_as([1,[1,1]], [2,[2]]))
【问题讨论】:
-
除了缩进之外,您对
same_structure_as的递归调用存在问题:缺少返回,因此与子结果无关,返回 True。 -
谢谢,现在应该看起来更好了...您能否详细说明丢失的退货?
-
重新阅读问题。在您的第二个循环期间,由于 [1,1] 和 [2] 都是类型:列表,它们将返回“true”。您需要修复 for 循环。
-
它们有不同的长度......我检查了类型和长度。
-
是的,但即使它在第二个循环中返回“False”,它也会返回到第一个循环的 for 循环,然后返回“True”。为了帮助您调试,请将
return False和return True替换为return print("False")和return print("True")
标签: python recursion nested comparison