列表及常用操作
列表是一个序列,用于顺序的存储数据
1、定义与初始化
lst = list() #使用list函数定义空列表
lst = [] #使用中括号定义列表
lst = [1,2,3] #使用中括号定义初始值列表
lst = list(range(1,20)) #使用list把可迭代对象转换为列表
通常在定义列表的时候,使用中括号,在转化可迭代对象为列表是使用list函数
2、查
lst[0] #通过下标来访问,当下标超出范围时,会indexeError
lst[-1] #负数索引从右边开始,并且从-1开始,当下标超出范围,会indexError
lst.index(value) #通过值来查找索引,返回查找到的第一个索引
lst.index(value,start,stop) #start指定从那个索引开始,end指定那个结束,并且不包含该索引,当值不存在该范围时,会ValueError,可以为负数,但是从左往右查找,凡是stop比start小总是ValueError。
lst.count(value) #返回值在列表里面出现的次数
index和count时间复杂度O(n)
3、改
lst[2] = 5 #直接使用下标操作取出元素并对其赋值,修改元素有且只有这种方法,对超出范围的索引会IndexError
4、增
lst.append(单个元素) #原地修改,返回结果是None,时间复杂度O(1)
lst.insert(index,value) #在index前插入value,也是原地修改,当索引超出范围时:当下标为负数,在第0个元素前插入值;当下标为正数,则在末尾插入值。时间复杂度是O(n)
lst.extend(可迭代对象) #把可迭代对象追加到末尾
lst + ['a','b'] #不修改lst本身,返回一个新的list,list的连接操作
5、删
lst.remove(value) #原地修改,根据值删除元素,从左到右删除第一个,当不存在时,ValueError。
lst.pop() #返回并删除最后一个元素,时间复杂度O(1)
lst.pop(index) #返回并删除index所在位置的值,不存在的索引,IndexError。时间复杂度O(n)
lst.clear() #清空列表
6、其它操作
len(lst) #查list的长度
lst.rerverse() #反转列表 无返回值
lst.sort() #排序 无返回值,元素能相互比较
lst.sort(reverse=True) #逆序
lst1 = lst #引用,复制的是地址。类似硬连接。
lst2 = lst.copy() #对可变对象是引用传递,对不可变是值传递