Python不使用reverse函数反转列表时出现IndexError问题排查
问题分析与修正
错误原因
- 索引越界:你将
y初始化为len(list1)(值为4),但Python列表的索引从0开始,list1的最大有效索引是3,访问list1[4]直接触发IndexError。 - 循环次数不足:
range(1, int(len(list1)/2))中,len(list1)/2等于2,range(1,2)只会执行1次循环,而反转长度为4的列表需要交换2次(索引0↔3、1↔2),无法完成完整反转。 - 起始索引错误:
c初始设为1,应该从0开始,这样才能从列表第一个元素开始交换。
修正后的代码
list1 = [1,2,3,4] y = len(list1) - 1 # 初始化为最后一个元素的有效索引 c = 0 # 循环次数为列表长度的一半,range(0,2)会循环2次 for x in range(int(len(list1)/2)): list1[c], list1[y] = list1[y], list1[c] y -= 1 c += 1 print(list1) # 输出: [4,3,2,1]
内容的提问来源于stack exchange,提问作者secretlymaia
相关产品推荐
相关产品推荐

