Python字符串切片实现反转:为何修改结束索引为-1无输出?
Python字符串切片反转的问题解析
首先得明确Python切片的核心规则:切片格式为[start:end:step],当step为负数时,切片从start位置开始向左遍历,直到到达但不包含end位置;且只有当start位置在end位置的右侧时,切片才会有效取值,否则结果为空。
第一个代码的输出原因
你最初的代码:
string = "abcdef" print(string[len(string) - 1: 0: -1])
这里len(string)-1对应索引5(字符f),end设为0,步长-1。因为切片不会包含end位置的字符,遍历会停在索引1的位置,最终取到索引5、4、3、2、1对应的字符fedcb,自然缺失了索引0的a。
第二个代码输出为空的原因
修改为end=-1后的代码:
string = "abcdef" print(string[len(string) - 1: -1: -1])
在Python中,索引-1等价于字符串最后一个字符的位置(也就是索引5)。此时start和end指向同一个位置,步长为负时要求start必须在end右侧才会触发遍历,两者位置相同的情况下,没有任何字符会被选中,所以输出为空。
正确的字符串反转写法
如果要实现完整反转,有两种简洁方式:
- 省略
end参数,让切片自动遍历到字符串开头:string = "abcdef" print(string[len(string)-1::-1]) - 直接使用最简切片写法:
string = "abcdef" print(string[::-1])
内容的提问来源于stack exchange,提问作者Nokia 3310
相关产品推荐
相关产品推荐

