记录博客 ZH-BLOG

Python slice

时间:2018-08-07 12:12:16分类:python

理解切片用法:

 +---+---+---+---+---+---+
 | P | y | t | h | o | n |
 +---+---+---+---+---+---+
   0   1   2   3   4   5 
  -6  -5  -4  -3  -2  -1

sequence[start, top, step]:

start:起始索引。如果 step 为正数,默认为 0,step 为负数,默认为 -1。

end:结束索引。如果 step 为正数,默认为 len(s),如果为负数,默认为 -len(s)-1。

step:间隔,默认为 1。

如果 step 是正数,使用第一种模式 0 1 2 3 4 5 ,如果 step 是负数,使用第二种模式 -6 -5 -4 -3 -2 -1 。

1. step 默认为 1,是正数,此时切片操作将 start 和 stop 全部转为正数

>>> s = 'Python'
>>> s[-2:] # 转为正数操作 s[len(s)-2:len(s)]
'on'
>>> s[:-2] # 转为正数操作 s[0:len(s)-2]
'Pyth'

2. step 如果为负数,切片操作将 start 和 stop 全部转为负数

>>> s[::-1] # 转为负数操作 s[-1:-len(s)-1:-1]
'nohtyP'
>>> s[1::-1] # 转为负数操作 s[1-len(s):-len(s)-1:-1]
'yP'
>>> s[:-3:-1] # 转为负数操作 s[-1:-3:-1]
'no'
>>> s[-3::-1] # 转为负数操作 s[-3:-len(s)-1:-1]
'htyP'

验证:

>>> s = 'Python'
>>> s[-2:]
'on'
>>> s[len(s)-2:len(s)]
'on'
>>> s[:-2]
'Pyth'
>>> s[0:len(s)-2]
'Pyth'
>>> 
>>> 
>>> s[::-1]
'nohtyP'
>>> s[-1:-len(s)-1:-1]
'nohtyP'
>>> s[1::-1]
'yP'
>>> s[1-len(s):-len(s)-1:-1]
'yP'
>>> s[:-3:-1]
'no'
>>> s[-1:-3:-1]
'no'
>>> s[-3::-1]
'htyP'
>>> s[-3:-len(s)-1:-1]
'htyP'