面试题答案
一键面试my_list = [1, 2, 3, 4, 5]
last_but_one = my_list[-2] if len(my_list) >= 2 else None
print(last_but_one)
常见导致列表索引错误的情况及避免方法
- 正向索引越界:
- 情况:当使用的正向索引值大于或等于列表的长度时,会引发
IndexError
。例如my_list = [1, 2, 3]; print(my_list[3])
,这里列表长度为3,有效索引是0、1、2,索引3超出范围。 - 避免方法:在使用正向索引前,确保索引值小于列表的长度。可以通过
if index < len(my_list): value = my_list[index]
这样的条件判断来避免。
- 情况:当使用的正向索引值大于或等于列表的长度时,会引发
- 负向索引越界:
- 情况:负向索引从 -1 开始表示列表的最后一个元素。如果负向索引值的绝对值大于列表长度,也会引发
IndexError
。例如my_list = [1, 2, 3]; print(my_list[-4])
,这里列表长度为3,负向索引 -1、-2、-3 有效,-4超出范围。 - 避免方法:使用负向索引时,确保其绝对值不大于列表长度。同样可以通过条件判断
if abs(negative_index) <= len(my_list): value = my_list[negative_index]
来预防。
- 情况:负向索引从 -1 开始表示列表的最后一个元素。如果负向索引值的绝对值大于列表长度,也会引发
- 对空列表进行索引:
- 情况:对空列表执行任何索引操作都会引发
IndexError
。例如my_list = []; print(my_list[0])
。 - 避免方法:在对列表进行索引前,先检查列表是否为空。可以使用
if my_list:
条件判断,只有列表不为空时再进行索引操作。
- 情况:对空列表执行任何索引操作都会引发