时光如水,滴沥万物。语言太多,方法更甚,一不注意就忘记了。
遂整理写下备忘,以避之。
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 15
| 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
| array + plist 就会得到 [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 'a', [1, 2, 3], 12.5]
|
乘法(*)
用数字x乘以一个序列,会生成一个新的序列,在新的序列中,原来的序列会被重复x次。
1 2 3 4 5
| [12]*10 [12, 12, 12, 12, 12, 12, 12, 12, 12, 12]
[None]*10 初始化长度为10的列表
|
成员资格(in)
检查一个值是否在序列里面。用关键词 in
长度(len())最大值(max())最小值(min())
Python的内建函数
1 2 3
| len(array) # 10 max(array) # 9 min(array) # 1
|
list的基本操作
元素赋值
删除元素(del)
分片赋值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| >>> 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 5
| >>> 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']
|