今天小编在学习的 Python 的时候,学到切片字符这部分,总是有很多疑惑,为什么明明 [1:5] ,但是输出结果中总是输出到 4,不会输出到 5。下面我们举例说明:
test1 = 'Hello World!'
test2 = "w3cschool!"
print ("test1[0]: ", test1[0])
print ("test2[1:5]: ", test2[1:5])
运行结果:
test1[0]: H
test2[1:5]: 3csc
解析:
在上面的代码中,第一个print很好理解,因为代码的索引通常都是从0 开始的,对于test1 = ‘Hello World!’ 来说,索引编号为
字符 | H | e | l | l | o | W | o | r | l | d | ! | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
索引编号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
通过上面的索引编号可以看出,print ("test1[0]: ", test1[0]) 输出的应该是索引为0 的字符,即:H。
字符 | w | 3 | c | s | c | h | o | o | l | ! |
---|---|---|---|---|---|---|---|---|---|---|
索引编号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
这时候小编同理比较认为第二个 print——print ("test2[1:5]: ", test2[1:5]) 通过如上表格可以发现,应该是输出:3csch 。结果打印出来的结果是 : 3csc 小编是百思不得姐,为啥子呢,后来再往下学,心里也一直记挂这个问题,差点都掉发了(赶紧摸摸头顶有没有又秃一分!!)
经过查找资料发现,在 Python 中,截取的时候如果用了 [ : ] ,那么这次截取采取左闭右开的原则,截取的时候右边的是开环,也就是说是不包含的,就如上写的 test2[1:5],其中 5 是不包含在内的,所以最后的输出结果,其实只打印到 4 就结束了。故输出结果应该是 3csc。
总结
- python 中可使用 [ ] 截取字符
- Python 中截取时如果用了 [ : ] ,那么采用的原则是左闭右开,左侧包含,右侧的元素是不会被包含的。
- Python 中的字符串,list,tuple 的截取都适用上述原则