Python交换列表首尾元素报IndexError: list index out of range如何解决
错误触发原因
Python 列表遵循0起始的索引规则,长度为n的列表合法索引范围为0到n-1。你代码中直接将列表长度len(list2)作为索引取值,超出了合法索引范围,因此抛出IndexError: list index out of range错误。
修复方案(按索引最小与索引最大位置元素互换的需求)
你要互换的最小索引是第一个元素对应下标0,最大索引是最后一个元素对应下标len(list2)-1,也可以用Python列表的负索引语法-1直接取最后一个元素,简化写法。
修复后代码如下:
list1 = input("Введите список: ") list2 = list1.split() # 增加边界判断,避免列表元素不足2个时无意义的互换操作 if len(list2) >= 2: list2[0], list2[-1] = list2[-1], list2[0] print(list2)
补充:如果需求为数值最小与数值最大的元素互换
如果你的实际需求是找到列表中数值最小和最大的元素互换位置,而非按首尾索引互换,需要先将输入的字符串转为数字列表,再找对应下标执行互换,代码如下:
list1 = input("Введите список: ") # 将输入的字符串分割后转为整数列表 num_list = list(map(int, list1.split())) if len(num_list) >= 2: # 获取数值最小、最大的元素对应下标 min_index = num_list.index(min(num_list)) max_index = num_list.index(max(num_list)) num_list[min_index], num_list[max_index] = num_list[max_index], num_list[min_index] print(num_list)
内容的提问来源于stack exchange,提问作者369
相关产品推荐
相关产品推荐

