Python 字符切片解读

2020-12-30 14:36:19 浏览数 (2549)

今天小编在学习的 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。

总结

  1. python 中可使用 [ ] 截取字符
  2. Python 中截取时如果用了 [ : ] ,那么采用的原则是左闭右开,左侧包含,右侧的元素是不会被包含的。
  3. Python 中的字符串,list,tuple 的截取都适用上述原则