IndexError报错原因解析:为何cars[X]输出Opel,cars[Y]触发索引错误
问题解答
- 首先明确Python列表的索引规则:长度为n的列表,合法正索引范围是
0 ~ n-1,超出这个范围访问就会抛出IndexError索引越界错误。 - 你给出的
cars列表总共有3个元素,长度为3,所以合法索引只有0、1、2三个值。 - 已知
print(cars[X])输出Opel,而Opel在cars列表中是第二个元素,对应索引值为1,因此可以确定X=1,属于合法索引范围,所以运行正常。 - 再看你给出的两个集合:
numbers1 = {1, 2, 3, X, 6}、numbers2 = {Y, 2, 3, 4, 7},两个集合的公共元素是2、3,结合已经推导出来的X=1,可以确定Y是numbers2独有的非公共元素,只能是4或者7,这两个值都大于cars的最大合法索引2,超出了索引范围,因此运行print(cars[Y])会抛出IndexError错误。 - 补充验证:如果Y取合法索引范围内的值,比如Y=2,运行
print(cars[Y])会正常输出BMW,不会抛出错误。
内容的提问来源于stack exchange,提问作者Pola Saber
相关产品推荐
相关产品推荐

