列表的长度是可变的。其元素也是可以修改的、可以使用[]或者list类型函数来定义列表。
列表定义操作:
1 | list1 = [1,2,3,4,5,8] |
list函数在数据处理中常用于将迭代器或生成器转化为列表:
1 | gen = range(10) |
添加或删除元素;
list.append(): 添加到尾部
list.insert(pos,val) : 将val添加到指定位置
list.pop(pos): 将pos位置的元素移除
list.remove(val) : 将定义第一个符合要求的值移除
使用 in 或 not in 判断值是否在list中:
1 | list3 = list(range(10)) |
如果通过添加内容连接列表是一种相对代价较高的操作,连接过程中需要创建新表,并且要复制对象。使用extend方法扩展列表是比较好的方式。
使用sort排序,sort的一些选项可能用的上,其中一个是传递一个二级排序key 用于生成排序值的函数。
1 | a = [10,5,20,33,12,4,7] |
二分查找和已排序列表的维护(必须排好序,否则会出错)
内建的bisect实现了二分搜索和排序列表的维护,bisect.bisect会找到元素应当插入的位置,而bisect.insort将元素插入相应位置。
1 | import bisect |
切片它的基本形式是将start:stop传入到索引符合[]中,由于不包含stop所以其元素数量为stop-start,如果省略start或者stop则表示从默认传入序列的起始位值或者结束位置。负索引可以从序列的尾部进行索引.也可以指定步进值step,需要在第二个冒号后面使用,表示每隔几个值取一个,当需要对列表或者元组进行翻转时,将step设置为-1.
1 | seq = [7,2,3,7,5,6,0,1,4] |
一些内建函数
enumerate : 返回(I,value)元组的序列,其中value时元素的值,i表示索引
1 | str_list = ["foo","bar","et"] |
sorted函数,返回一个根据任意序列中的新建的已排序列表
zip :将列表、元组或其他序列的元素配对,新建一个元组构成的列表。
1 | str_list1 = ["foo","bar","baz"] |
reversed : 将序列的元素带线排列。
1 | print(list(reversed(range(10)))) |