range(len(input_string)-1, -1, -1)为何能实现字符串反转?
问题1:range(len(input_string)-1, -1, -1)的具体作用
Python内置range函数接收三个参数时的语法为range(start, stop, step),遍历遵循左闭右开规则,只会生成符合边界要求的整数序列,对应到这里的三个参数含义如下:
- 第一个参数
len(input_string)-1:Python字符串索引从0开始计数,长度为n的字符串最后一个字符的下标就是n-1,这里是把遍历的起始位置设为原字符串最后一个字符的下标 - 第二个参数
-1:受左闭右开规则限制,要让遍历覆盖到下标为0的第一个字符,就需要把终止边界设为-1,遍历到0之后会自动停止,不会读取不存在的-1下标 - 第三个参数
-1:设置步长为-1,每轮遍历的下标自动减1,实现从后往前倒序走的效果
举个实际例子:如果输入字符串是"hello",长度为5,这个range生成的整数序列就是4,3,2,1,0,正好对应原字符串从最后一位到第一位的所有下标。
问题2:为什么遍历该range就能得到反转结果
字符串支持通过下标直接读取对应位置的字符,你在循环中按倒序下标依次取原字符串的字符,逐个拼接到初始为空的reverse_input变量中,最终就会得到反转后的字符串。
还是以"hello"为例,遍历拼接过程如下:
- i=4时取到字符
o,reverse_input="o" - i=3时取到字符
l,reverse_input="ol" - i=2时取到字符
l,reverse_input="oll" - i=1时取到字符
e,reverse_input="olle" - i=0时取到字符
h,reverse_input="olleh"
遍历完成后返回的就是原字符串的反转结果。
内容的提问来源于stack exchange,提问作者kr003
相关产品推荐
相关产品推荐

