繁体   English   中英

超出范围的索引不会在 Python 中引发 IndexError

[英]index out of range doesn't raise IndexError in Python

与布尔值一起使用时,可能不会引发IndexError

例如,假设

list 1 = [1, 2, 3]

这将返回True

True or True and list1[3] > 3

但这会引发IndexError

False or True and list1[3] > 3

第一行将读取True并且不会继续,因为有一个or所以list[3] > 3无关紧要并且不会被评估,而是返回 True 。

第二行以False + 开头, or要求它读取下一个 boolean 表达式以返回 output。 它将读取True并尝试评估list[3] > 3表达式,这将引发 IndexError

这是因为 boolean 运算符的性质
True or True and list1[3] > 3
因为您已将其编写为True or some logic ,因为它遇到True和尾随or它将简单地忽略逻辑的True因为如果逻辑以True开头并且在两者之间有 a or之间但如果它可能是False and因为True and False返回False ,因此它将检查逻辑的 rest。 而你的第二个以False开头or因此如果它后面跟着一个False可以是error

因为索引号直到 2。列表索引从 0 开始。这将起作用:

首先使您的列表名称正确:

list1 = [1, 2, 3]

False or True and list1[2] > 3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM