CodeAcademy的Python课程正在通过循环函数运行我,但我不了解结果。目的是查看一个列表是否是另一个列表的镜像。即[1,2,3]至[3,2,1]
20分钟后,我查看了解决方案,但我不明白为什么每次都不返回True?:
def reversed_list(lst1, lst2):
for index in range(len(lst1)):
if lst1[index] != lst2[len(lst2)-1-index]:
return False
return True
“返回True”的缩进级别与“用于索引”的缩进级别相同,这将覆盖前一行返回的任何值。
或者,当我在“ if”缩进处引入“ else”时,一切都返回True:
def reversed_list(lst1, lst2):
for index in range(len(lst1)):
if lst1[index] != lst2[len(lst2)-1-index]:
return False
else:
return True
任何人都可以帮助菜鸟吗?
答案 0 :(得分:1)
return False
导致函数在返回False时完全退出,因此在这种情况下永远不会到达return True
行。放置早期返回语句是一种中断函数执行的方式
答案 1 :(得分:0)
如果您的语句if lst1[index] != lst2[len(lst2)-1-index]
找不到任何不匹配的项目,那么我们的函数将立即结束。将不再执行任何代码。
添加else语句时,意味着如果有任何匹配的项目,该函数将返回True,并且将不再执行任何代码。
答案 2 :(得分:0)
您建议的第一和第二代码给出不同的输出。
而且您应该知道函数只能使用一次return
。
帮助打印中间结果的方法。
1
def reversed_list(lst1, lst2):
for index in range(len(lst1)):
print(index)
if lst1[index] != lst2[len(lst2)-1-index]:
print('False')
return False
print('True')
return True
2
def reversed_list(lst1, lst2):
for index in range(len(lst1)):
print(index)
if lst1[index] != lst2[len(lst2)-1-index]:
print('False')
return False
else:
print('True')
return True
使用添加的行运行我的代码,这些代码将显示您的中间结果。您将看到第二个函数只会迭代第一个元素,然后返回True
或False
。
答案 3 :(得分:0)
在第一种情况下,return True
是函数的结尾。您必须遍历整个range(len(lst1))
才能到达。因此,如果匹配循环中if
的条件,则执行return False
语句,然后函数在此处结束。
在第二种情况下,您永远不会遍历整个列表。在第一次迭代中,检查条件lst1[index] != lst2[len(lst2)-1-index]
,其中index = 0
并返回True或False。