0%

Python - 数组切片、更新、排序

1. 数组切片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
l = [1, 2, 3, 4, 5, 6, 7, 8, 9]

l[:] # 所有元素
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

l[0] # 第一个元素
# 1

l[1:3] # 第2~4个元素,不包括第4个
# [2, 3]

l[3:] # 第4~最后一个元素
# [4, 5, 6, 7, 8, 9]

l[:3] # 第1~4个元素,不包括第4个
# [1, 2, 3]

l[:-1] # 第1~最后一个元素,不包括最后一个
# [1, 2, 3, 4, 5, 6, 7, 8]

l[2:-1:2] # 从第3~最后一个元素中每隔2个步长取一个,不包括最后一个元素
# [3, 5, 7]

l[::3] # 每隔3个步长取一个元素
# [1, 4, 7]

2. 数组更新

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
l = [1, 2, 3, 4, 5, 6, 7, 8, 9]

l.append(0) # 列表最后追加一个元素0
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

l.extend([0, 0]) # 列表后面追加另一个列表
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0]

l.insert(1, '0') # 在第1个元素的位置插入字符串'0'
# [1, '0', 2, 3, 4, 5, 6, 7, 8, 9]

l[1:3] = [0] # 用0替换第2~4个元素,不包括第4个
# [1, 0, 4, 5, 6, 7, 8, 9]

l[-2:] = [0, 0, 0, 0] # 将最后两个元素替换为四个0
# [1, 2, 3, 4, 5, 6, 7, 0, 0, 0, 0]

l.pop() # 弹出最后一个元素,返回该元素的值
# [1, 2, 3, 4, 5, 6, 7, 8]

l.pop(0) # 弹出第一个元素,返回该元素的值
# [2, 3, 4, 5, 6, 7, 8, 9]

del l[0] # 删除第一个元素
# [2, 3, 4, 5, 6, 7, 8, 9]

3. 数组排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
l = [1, 2, 3, 4, 5, 6, 7, 8, -9]

l.reverse() # l反向
# [-9, 8, 7, 6, 5, 4, 3, 2, 1]

list(reversed(l)) # l反向,与l.reverse()的区别:后者直接作用于l,返回None,前者返回一个迭代器

l.sort() # 对l进行排序, 默认从小到大,升序
# [-9, 1, 2, 3, 4, 5, 6, 7, 8]

sorted(l) # 升序排序,与l.sort()的区别:后者直接作用于l,返回None,前者返回一个新的列表
# [-9, 1, 2, 3, 4, 5, 6, 7, 8]

l.sort(reverse=True) # 对l进行从大到小排序,降序,可与key参数搭配灵活使用
# [8, 7, 6, 5, 4, 3, 2, 1, -9]

l.sort(key=lambda x: abs(x)) # 按指定的方法进行排序,一般与lambda临时函数配合使用,也可以使用自定义方法如:

def my_f(x):
return abs(x) # 取绝对值
l.sort(key=my_f) # 按自定义方法进行排序

l = [(1,2), (-4,3), (6,0)]

l.sort(key=lambda x: x[1]) # 按子元组的第二个元素大小升序排列
# [(6,0), (1,2), (-4,3)]

l.sort(key=lambda x: abs(x[0]), reverse=True) # 按第一个元素的绝对值大小降序排列
# [(6,0), (-4,3), (1,2)]

4. 其他数组操作

1
2
3
4
5
6
7
8
9
10
[1, 2] * 4  # [1,2]重复4次
# [1, 2, 1, 2, 1, 2, 1, 2]

l = [1, 2, 3, 4, 5, 6, 5, 8, 8]

l.count(8) # 统计8出现的次数
# 2

l.index(5) # 找到5第一次出现的位置索引值(列表中没有5的话会报错ValueError)
# 4