python-列表常用操作

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

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

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

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

通用序列操作

索引(index)

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

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

分片(:)

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
array + plist
就会得到
[1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 'a', [1, 2, 3], 12.5]

乘法(*)

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

1
2
3
4
[12]*10
[12, 12, 12, 12, 12, 12, 12, 12, 12, 12]

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

成员资格(in)

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

1
'P' in 'Python' # True

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

Python的内建函数

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

list的基本操作

元素赋值

1
array[1] = 10

删除元素(del)

1
del array[2]

分片赋值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
>>> 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]

list的方法

append 追加

在列表末尾追加新的对象

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

count 某元素计数

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

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

extend 扩展

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

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

index 查找索引位置

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

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

insert 在索引位插入

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

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

pop 移除元素

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

1
2
3
4
5
6
7
8
9
10
>>> 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]

remove 移除第一个匹配项

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

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

reverse 反转

将list中的元素反向存放

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

sort 排序

原地操作, 不返回值

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

sorted 排序

非原地操作, 返回一个list

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

高级排序

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

1
2
3
4
5
6
7
8
9
10
11
>>> 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']

list()

将序列转换成list

1
2
3
4
>>> ls = 'webong blog'
>>> lst = list(ls)
>>> lst
['w', 'e', 'b', 'o', 'n', 'g', ' ', 'b', 'l', 'o', 'g']