Python 常用基础知识点(三)—— 列表

Python 常用基础知识点(三)—— 列表

    • 基本方法
    • 内置方法
    • 列表切片操作
    • 列表推导式

列表也算是 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 常用基础知识点(四 )—— 元组 & 字典

你可能感兴趣的:(python基础,Python,python)