16. 切片

136 阅读1分钟

每次遇到切片的内容总要思考半天,考虑还是自己的基本功不太扎实,故在此整理一下!

简单切片:a[start : stop]

前闭后开区间范围的元素,非负下标和负数下标索引范围共同构成了Python索引的有效范围。

[Slice]Slice
正索引01234
负索引-5-4-3-2-1

缺省:a[ : stop]a[start : ]a[ : ]

startstop 缺省表示的范围都是无穷。

超出有效范围

  • start < stopstart 或者 stop 超出有效范围(以step为正的情况为案例)时,将截取到列表首或者列表末。

输入:

a = list(range(10))
print(a)
print(a[-100:6])
print(a[1:100])

输出:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
  • start > stop(以step为正的情况为案例),返回空列表。

输入:

a = list(range(10))
print(a)
print(a[3:2])
print(a[-1:-2])

输出:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[]
[]

扩展切片:a[start : stop : step]

step 是一个非零整数,step 怎么数呢:step 为正,正向数;step 为负,逆向数。当前 a[start] 要的!之后依次取 a[start + step] 直到走到 stop 的范围(左闭右开)。

step 为正数时,读取方向为正向

输入:

a = list(range(10))
print(a)
print(a[::2])

输出:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 2, 4, 6, 8]

step 为负数时,读取方向为负向

输入:

a = list(range(10))
print(a)
print(a[::-2])

输出:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[9, 7, 5, 3, 1]
例子

输入:

str2= "What's Your Name"
print(str2[::2])
print(str2[::-1])
print(str2[-1::-1]) 

输出:

Wa' orNm
emaN ruoY s'tahW
emaN ruoY s'tahW