列表与元组相比,列表的长度可变、内容可以被修改。
创建列表
1、用方括号定义;2、用list函数
列表的增删改查
用append在列表末尾添加元素:
insert在特定位置插入元素
pop是Insert的逆运算,它移除并返回指定位置的元素
用remove去除某个值,remove会先寻找第一个值并除去
用in可以检查列表是否包含某个值
否定in可以再加一个not
在列表中检查是否存在某个值远比字典和集合速度慢,因为Python是线性搜索列表中的值,但在字典和集合中,在同样的时间内还可以检查其它项(基于哈希表)。
串联和组合列表
与元组类似,可以用加号将两个列表串联起来
如果已经定义了一个列表,用extend方法可以追加多个元素
通过加法将列表串联的计算量较大,因为要新建一个列表,并且要复制对象。用extend追加元素,尤其是到一个大列表中,更为可取。因此:
要比串联方法快:
列表排序
sort函数对列表原地排序
sort函数添加关键字key可以对字符串进行排序
sorted函数为序列创建一个副本,并不会修改原序列
二分搜索
bisect模块支持二分查找,和向已排序的列表插入值。
bisect.bisect可以找到插入值后仍保证排序的位置:
bisect.insort是向这个位置插入值:
切片
用切边可以选取大多数序列类型的一部分,切片的基本形式是在方括号中使用 start:stop:
切片的起始元素是包括的,不包含结束元素。因此,结果中包含的元素个数是stop - start。
start或stop都可以被省略,省略之后,分别默认序列的开头和结尾:
负数表示从后向前切片
在第二个冒号后面使用step,可以隔一个取一个元素
可以使用间隔等于-1,使列表或元组颠倒过来
序列函数
enumerate函数
迭代一个序列时,enumerate可以跟踪当前项的序号。
使用enumerate可以将字符串标签映射到数字序列
zip函数
zip可以将多个列表、元组或其他序列成对组合成一个元组列表
zip可以处理任意多的序列,元素的个数取决于最短的序列:
zip的常见用法之一是同时迭代多个序列,可能结合enumerate使用:
给出一个“被压缩的”序列,zip可以被用来解压序列。也可以当作把行的列表转换为列的列表。