Python 中 14 个切片操作

切片(Slice)是一个取部分元素的操作,是 Python 中特有的功能。它可以操作 list、tuple、字符串。

Python 的切片非常灵活,一行代码就可以实现很多行循环才能完成的操作。切片操作的三个参数 [start: stop: step] ,其中 start 是切片的起始位置,stop 是切片的结束位置(不包括),step 可以不提供,默认值是 1,并且 step 可为负数(详细使用见下)

下面盘点下切片的常见操作。

1.

import numpy as np
L = np.random.randint(0,10,10)
print(L)
L1 = L[0:3]
print(L1)

输出为:

[8 5 5 6 8 9 0 9 3 0]
[8 5 5]

2.

切片左端点为 0,可省略

L2 = L[:3]
print(L2)

输出:

[1 2 7]

3.

每两个取一个

L3 = L[1:8:2]
print(L3)

输出:

[3 1 6 2]

4.

支持倒数切片,倒数第一个元素的索引是 -1

L4 = L[:-1]
print(L4)

输出:

[2 2 1 2 1 0 2 3 2]

5.

原样复制一个 list

L5 = L[:]
print(L5)

输出:

[9 5 6 5 6 5 7 8 6 5]

6.

起始索引和终止索引都省略,也就都为默认值,如下步长设置为 2 切取元素

L6 = L[::2]
print(L6)

输出:

[8 4 9 6 8]

7.

一行代码实现列表反转

L7 = L[::-1]
print(L7)

输出:

[5 5 8 2 9 3 9 1 0 9]

8.

步长为负数,实际上指明了一个逆向迭代器。如下逆向倒数,每两个取一个。

L8 = L[::-2]
print(L8)

输出:

[9 5 1 2 4]

9.

值得注意,Python 超出索引范围不报错

L9 = L[:12]
print(L9)

输出:

[9 9 3 5 4 2 3 2 5 7]

10.

步长 step 为 0,会报错.

L10 = L[::0]
print(L10)

输出

ValueError: slice step cannot be zero

11.

切片操作的三个参数可以用表达式

L11 = L[3%2:2*3+1]
print(L11)

输出

[1 3 1 2 2 2]

12.

连续切片操作

L12 = L[3%2:][:2*3+1]
print(L12)

输出:

[4 3 4 8 0 3 6]

13.

元组对象的切片操作

a = (0,1,2,3,4,5)
L13 = a[:3]
print(L13)

输出:

(0, 1, 2)

14.

字符串的切片

b = "abcdefg"
L14 = b[0:3]
print(L14)

输出

abc

以上就是 Python 切片常用的 14 个操作,希望能帮助到大家。