python-列表常用操作

6/13/2017

时光如水,滴沥万物。语言太多,方法更甚,一不注意就忘记了。 遂整理写下备忘,以避之。

list,Python 最常用的数据结构,也是其内建的最常用的序列之一。list 可以修改,是较之于 tuple 不同的地方。

list 的元素可以包含所有的数据类型,甚至是另一个 list。

这就是一个list
plist = [1, 'a', [1,2,3], 12.5]
array = [1,2,3,4,5,6,7,8,9]
1
2
3

# 通用序列操作

# 索引(index)

序列中的所有元素都有编号,从 0 开始递增。元素可以通过编号进行访问,这就常说的索引,或者称之为下标。 如果是用负索引,会从右边最后一个元素开始。最后一个元素的编号是 -1 。

plist[0] #1
plist[1] #'a'
plist[-1]  #12.5
1
2
3

# 分片(😃

list[index:last-index:step] 通过分片操作来访问一定范围的元素。分片通过冒号:相隔的两个索引来实现。第一个索引值是需要提取部分的第一个元素的编号,最后的索引值是分片之后剩下部分的第一个元素的编号。可以理解成左闭右开。

plist[0:2] #[1,'a']
arr[1:4] #[2,3,4]

#便捷用法
array[5:] -- [6,7,8,9]
array[-3:] -- [7,8,9]
array[:3] -- [1,2,3]
array[:] -- [1,2,3,4,5,6,7,8,9] #复制整个list

还可以设置步长

array[1:6:2] -- [2,4,6]
array[::4] -- [1,5,9] #步长是4
array[10:0:-2] -- [9, 7, 5, 3] #步长是负数,从右向左提取数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 序列相加(连接操作 + )

只有相同类型的序列才可以进行连接操作

array + plist
就会得到
[1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 'a', [1, 2, 3], 12.5]

1
2
3
4

# 乘法(*)

用数字 x 乘以一个序列,会生成一个新的序列,在新的序列中,原来的序列会被重复 x 次。

[12]*10
[12, 12, 12, 12, 12, 12, 12, 12, 12, 12]

[None]*10 初始化长度为10的列表

1
2
3
4
5

# 成员资格(in)

检查一个值是否在序列里面。用关键词 in

'P' in 'Python' # True
1

# 长度(len())最大值(max())最小值(min())

Python 的内建函数

len(array) # 10
max(array) # 9
min(array) # 1
1
2
3

# list 的基本操作

# 元素赋值

array[1] = 10
1

# 删除元素(del)

del array[2]
1

# 分片赋值

>>> name = list('webapp')
>>> name
['w', 'e', 'b', 'a', 'p', 'p']

# 不等长赋值(替换)
>>> name[3:] = list('kong')
>>> name
['w', 'e', 'b', 'k', 'o', 'n', 'g']

#在不替换任何原有的元素情况下插入新的元素
>>> number = [1,5]
>>> number[1:1] = [2,3,4]
>>> number
[1, 2, 3, 4, 5]

#通过分片赋值来删除元素
>>> number
[1, 2, 3, 4, 5]
>>> number[1:4] = []
>>> number
[1, 5]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# list 的方法

# append 追加

在列表末尾追加新的对象

array.append(10)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
1
2

# count 某元素计数

统计某个元素在列表中出现的次数。 返回: 元素次数

>>> [1,2,3,1,2,1,1,1,].count(1)
5
1
2

# extend 扩展

原地操作, 在列表的末尾一次性追加列一个 list 中的多个值。可以理解成为扩展。

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]
1
2
3
4
5

# index 查找索引位置

在列表中找出某个值第一个匹配的索引位置, 如果没有就会发现一个异常。返回:索引位置

>>> a
[1, 2, 3, 4, 5, 6]
>>> a.index(4)
3

1
2
3
4
5

# insert 在索引位插入

insert(index, value), 在 index 位置插入一个 value

>>> a.insert(3,'a')
>>> a
[1, 2, 3, 'a', 4, 5, 6]
1
2
3

# pop 移除元素

移除 list 中的一个元素(默认是最后一个),并返回该元素的值。

>>> a
[1, 2, 3, 'a', 4, 5, 6]
>>> a.pop()
6
>>> a
[1, 2, 3, 'a', 4, 5]
>>> a.pop(1)
2
>>> a
[1, 3, 'a', 4, 5]
1
2
3
4
5
6
7
8
9
10

# remove 移除第一个匹配项

用于移除 list 中第一个匹配项

>>> a
[1, 3, 'a', 4, 5]
>>> a.remove('a')
>>> a
[1, 3, 4, 5]
1
2
3
4
5

# reverse 反转

将 list 中的元素反向存放

>>> a
[1, 3, 4, 5]
>>> a.reverse()
>>> a
[5, 4, 3, 1]
1
2
3
4
5

# sort 排序

原地操作, 不返回值

>>> a
[5, 4, 3, 1]
>>> a.sort()
>>> a
[1, 3, 4, 5]
1
2
3
4
5

# sorted 排序

非原地操作, 返回一个 list

>>> a
[5, 4, 3, 1]
>>> b = sorted(a)
>>> b
[1, 3, 4, 5]
1
2
3
4
5

# 高级排序

sort 有两个可选的参数: key 和 reverse

>>> a
['aa', 'aaaaa', 'aaa', 'bbbbbbbb']
>>> a.sort(key=len)
>>> a
['aa', 'aaa', 'aaaaa', 'bbbbbbbb']

>>> a
['aa', 'aaa', 'aaaaa', 'bbbbbbbb']
>>> a.sort(reverse=True)
>>> a
['bbbbbbbb', 'aaaaa', 'aaa', 'aa']
1
2
3
4
5
6
7
8
9
10
11

# list()

将序列转换成 list

>>> ls = 'webong blog'
>>> lst = list(ls)
>>> lst
['w', 'e', 'b', 'o', 'n', 'g', ' ', 'b', 'l', 'o', 'g']
1
2
3
4
最后更新时间: 3/12/2021, 10:45:12 AM