每次遇到切片的内容总要思考半天,考虑还是自己的基本功不太扎实,故在此整理一下!
简单切片:a[start : stop]
前闭后开区间范围的元素,非负下标和负数下标索引范围共同构成了Python索引的有效范围。
| [Slice] | S | l | i | c | e |
|---|---|---|---|---|---|
| 正索引 | 0 | 1 | 2 | 3 | 4 |
| 负索引 | -5 | -4 | -3 | -2 | -1 |
缺省:a[ : stop]、a[start : ]、a[ : ]
start 和 stop 缺省表示的范围都是无穷。
超出有效范围
- 当
start<stop且start或者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