列表也算是 python 中高频使用的可迭代数据,与数组类似,但是添加的元素可以是各种类型,感觉更像链表,而且数据 可重复
append(p_object) 列表尾部追加成员 p_object
extend(iterable) 向列表中追加一个可迭代对象 iterable
count(value) 返回列表中的参数 value 出现的次数
index(value, start=None, stop=None) 返回参数 value 在列表中的序号(value 不存在则报错)
insert(index,object) 向里列表中指定位置(index)插入数据(object)
pop(obj=list[-1]) 删除列表中成员(默认尾部)并返回删除的成员
popleft() 删除列表中成员(默认头部)并返回删除的成员
remove(value) 删除列表中的指定成员(有多个则只删除第一个,不存在则报错)
reverse() 将列表中的成员顺序颠倒,返回None
sort(key=None, reverse=False) 将列表中的成员排序(要求其成员可排序,否则报错)
clear() 清空列表
copy() 复制列表,浅复制
append 方法默认追加的是一个元素,无论这个元素是什么类型,都会在列表后面添加一个,长度加一
extend 方法扩展的是可迭代的对象,包括 list 、str、dict、set 等。
但是如果追加的是 dict 类型的,默认添加的键(key) 而不是值(value)
count 方法统计的是列表内的元素出现的次数,因为列表数据可重复,所有可能大于 1 ,出现多次,查找失败返回 0
index 方法查找,指定值后查找成功后返回在列表的索引位置(索引位置从 0 开始),
查找失败则抛出ValueError
的错误。 start 和 stop 可以指定查找范围,默认全列表查找
reverse 方法是将列表内的数据倒序,因为列表默认按添加顺序排列。
sort 方法是将表内数据排序,操作的是自身(原地排序),返回的是 None。
其中 key 是排序条件,可选值 int(默认)、len、lambda表达式;
reverse 默认正序,如果需要倒序排序,可以设置为 True
详细可以参考这篇博文 。 没有找到底层实现源码,后面有深入了解再追加说明
len(list) 列表元素个数
max(list) 返回列表元素最大值
min(list) 返回列表元素最小值
list(seq) 将元素转换为列表
del(list[value]) 删除列表或列表中的元素
内置方法相关比较常用有这几个,可以先了解熟悉,基础点列完了,后面会追加内置函数篇。
列表的切片操作是一个比较常用的功能。内部是通过 slice 类来实现的,主要语法是 slice(start, stop[, step])
使用时是 list[start:stop[:step]] 列表的切片操作返回的还是一个列表
示例说明:
list[:3] 获取列表前三个数据,返回的还是一个列表
list[:] 深复制当前列表(id 不同)
list[::2] 复制偶数位(索引从0开始,日常习惯就是奇数位,即 1 ,3 , 5 ,……)
list[1:] 复制从 1 开始后的列表数据,即除 0 以外列表的剩余数据
list[2:3] 复制第 2 位(索引从 0 开始)数据,这类操作包含开始 start(这里是 2),不包含结束位置 stop (这里是 3)
注意: 这里虽然只取了一位数据,但是返回的类型还是一个列表,与 `[list[2]]` 相同
语法:
列表 = [表达式 for 变量 in 列表 for 变量 in xxx]
列表 = [表达式 for 变量 in 列表 if 条件]
优点:
比普通 for 循环效率更高,实际测试在 1.5 倍到 3 倍左右,而且循环次数越多,差异越明显
示例:
listData = [ i for i in range(10)] # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
listData =[i for i in range(10) if i % 2 == 0] # [0, 2, 4, 6, 8]
复杂点的,这个多维数组初始化比较方便,if 条件前面可以继续追加 for 循环条件,最后的是单条件值,可以用
伪三目运算实现 if … else … 语句,如: a if 条件 else 值
listData = [(i, j) for i in range(10) for j in range(10) if i != j]
等效代码
listData=[]
for i in range(10):
for j in range(10):
if i != j:
listData.append((i, j)) # set 集合
更复杂点的,这个涉及到 lambda 表达式,简单了解一下,后续再深挖
a = [lambda x: x * i for i in range(3)] # 此处定义了一个装了 3 个匿名函数函数的列表,尚未调用匿名函数,
# 调用时全局变量 i 变为 2 相当于 a = [lambda x:x*2, lambda x:x*2, lambda x:x*2]
下一篇 Python 常用基础知识点(四 )—— 元组 & 字典