Python切片访问正常但s[len(s)]报String index out of range错误问询
错误原因详解
Python中字符串属于序列类型,遵循两个核心索引规则:
1. 单个下标访问规则
- 字符串下标从
0开始计数,长度为n的字符串,合法单个下标范围是0到n-1 - 你示例中
s = 'hello'的长度是5,合法下标为0/1/2/3/4,len(s)的值是5,超出了合法下标范围,因此会抛出String index out of range错误 - 如果要获取最后一个字符,除了写
s[len(s)-1]外,还可以直接使用更简洁的负下标语法s[-1]
2. 切片操作的特殊规则
Python的切片[起始下标:结束下标]是左闭右开区间,即包含起始下标的字符、不包含结束下标的字符,同时切片允许结束下标超出字符串实际长度,不会触发报错:
- 你写的
s[0:len(s)]等价于s[0:5],会取下标0、1、2、3、4的所有字符,刚好对应完整字符串,因此可以正常运行 - 甚至写
s[0:100]也不会报错,只会返回完整的hello字符串
修正后的代码示例
s='hello' print(s[0:len(s)]) # 输出 hello print(s[len(s)-1]) # 输出 o,用长度减1取最后一个字符 print(s[-1]) # 输出 o,用负下标取最后一个字符,更推荐
内容的提问来源于stack exchange,提问作者PvC9966
相关产品推荐
相关产品推荐

