You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现归并排序遇IndexError:列表赋值索引越界问题求助

问题根源:辅助数组初始化错误

嘿,这问题我太熟了——你在初始化辅助数组vetorAux的时候犯了Python特有的语法错误!

错误原因分析

你写的:

vetorAux = [] * len(vetorNum)

在Python里,空列表乘以任何整数结果还是空列表。比如[] * 5得到的是[],而不是一个长度为5的列表。这和Java里new Comparable[n]创建指定长度数组的逻辑完全不一样!

当你后续在归并过程中尝试给vetorAux[i]赋值时,因为vetorAux是空的,根本不存在索引i,自然就抛出IndexError: list assignment index out of range了。

修正方案

把辅助数组的初始化改成:

vetorAux = [None] * len(vetorNum)

这样会创建一个长度和vetorNum一致的列表,每个位置初始化为None,之后你就可以正常通过索引赋值了,和Java里的数组初始化逻辑对齐。

额外提示

Sedgewick的实现之所以提前创建一次辅助数组,是为了避免在递归过程中反复分配内存,提升效率。如果你是在Python里实现,这个思路没问题,但一定要注意Python列表和Java数组的初始化差异——Python里没有直接创建指定长度空列表的语法,必须用占位符(比如None)来填充。

内容的提问来源于stack exchange,提问作者F.G.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:53:30