Python反转字符串函数中range为何要设置len(string)-1参数?
关于Python反转字符串函数中range参数的解答
首先纠正你对索引计算的误解:
- Python中字符串等序列类型的索引从0开始计数,以
Hello为例,各字符对应索引为:H(0)、e(1)、l(2)、l(3)、o(4),len("Hello")返回值为5,因此len(word)-1计算结果为4,正好对应最后一个字符o的索引,不是你以为的3。
再讲range函数的参数规则:
Python内置range的三个参数含义为 range(起始值, 终止值, 步长),其中终止值对应的数不会被包含在生成的序列里,步长为负数时会从起始值开始倒序生成数值。
你提到的代码里range(len(word)-1, -1, -1)的逻辑是:
- 起始值设为
len(word)-1:从字符串最后一个字符的索引开始遍历 - 终止值设为
-1:遍历到索引为0的时候就停止(因为-1不包含在生成序列里),正好能取到字符串的第一个字符 - 步长设为
-1:每次遍历索引减1,实现从后往前取字符
如果你把起始值和终止值调换,写为range(-1, len(word)-1, -1),由于步长为负,起始值-1小于终止值,range会生成空序列,循环根本不会执行,返回的反转结果是空字符串,完全不符合需求。
内容的提问来源于stack exchange,提问作者J.DF
相关产品推荐
相关产品推荐

