python - 为什么 return True 必须在 if 语句和 for 循环之外?
问题描述
我正在尝试查看 lst2 是否与 lst1 相反。
对于以下代码,为什么return True
必须在 if 语句之外。当我使用 if 语句放置 else: return False 时,两个打印都返回 True(这是不正确的)。谢谢!
def reversed_list(lst1, lst2):
for index1 in range(len(lst1)):
if lst1[index1] != lst2[(-1 - index1)]:
return False
return True
print(reversed_list([1, 2, 3], [3, 2, 1]))
print(reversed_list([1, 5, 3], [3, 2, 1]))
解决方案
如果你把它放入if
, 即放入与 相同的条件中return False
,但在它之后,那么它将永远不会被执行,因为该函数将始终保留第一个return
。或者它总是在if
, before 中执行,离开它,从而无意中覆盖了预期的False
. 这似乎是你正在观察的。
如果将它放入循环中(但在 之外if
),它将在循环的第一次迭代期间执行,即太早了。
如果你把它放入循环中,但使用else
,它仍然会执行得太早。在第一种情况下 not False
。这仍然不是您想要的,因为您只想要 aTrue
当False
循环中没有任何地方时,而不是已经在 not 的第一种情况下False
。
如果循环完全通过而不触发 False,您只想返回一个 true 布尔值。你想要这样,否则你可能会错过 False 的情况。
这就是为什么您在所示代码中描述和使用的位置(在 theif
和循环之外)是唯一正确的方法。
推荐阅读
- c++ - 在封闭类模板参数下初始化嵌套模板类成员
- python - 如何拆分两个python文件
- javascript - Promise resolve 阻止正在发送的数据
- ios - 如何以编程方式从 UITableViewController 顺利切换到 UIViewController
- alexa-skills-kit - Alexa 播客技能在 1 秒后停止播放
- html - 悬停时,文本显示在标题顶部
- angular - 需要额外的 angular 8 装载机
- mysql - SQL 外键约束的格式不正确
- python - 选择两个日期之间的 Pandas 数据框行
- ios - 未知类型名称“SKPaymentDiscount”。FBSDKCoreKit