为何排序代码中range取值为5而非6?列表长度匹配问题咨询
为什么6个元素的列表要用range(5)循环?
这是因为代码里每次循环要做的是比较当前索引和下一个索引的元素:NameList[Index] vs NameList[Index+1]。
- 你的列表有6个元素,编程里列表索引从0开始算,所以对应的索引是0到5。
- 要比较所有相邻的元素对,最后一对是索引4和5(也就是第5个和第6个元素)。
- 如果用
range(6),循环到最后一次时Index会等于5,这时候Index+1就是6,而列表根本没有索引6的元素,程序会直接报错。
用range(5)的话,循环里的Index会取0、1、2、3、4这五个值,刚好覆盖所有合法的相邻元素对,每一次Index+1最大到5,完全在列表的索引范围内,不会出问题。
另外补充下,这段代码是冒泡排序的实现,通过反复遍历交换相邻的逆序元素,把列表排好序。
内容的提问来源于stack exchange,提问作者Uchhashi
相关产品推荐
相关产品推荐

