Python列表
概念:有序可变的元素集合(可以有重复元素)
定义:
-
list = [元素1,元素2,元素3,...]
-
-
列表生成式:range(num),生成从0-num-1;range(start,stop,step),从start开始到stop-1结束,以step为步长
-
列表推导式:映射解析--一对一变更 ;过滤--从多到少。语法:newlist = [对num进行的操作(num+-1) for num in nums if 条件]
-
-
使用list()函数创建新列表:newlist = list(("x1","x2"))
列表的简单操作:
-
列表的增加相关操作:
-
append():list.append(object),在list列表最后添加object元素;会改变原来的列表
-
insert():list.insert(index,object),在索引为index的位置放入object,index之后的列表元素索引会发生改变+1
-
extend():往列表中,扩展另外一个可迭代序列;list1.extend(list2)--改变list1,即在list1之后接入list2;切记list2不仅仅可以是列表,list2可以是任何可迭代 的数据类型,当list2为字符串时,使用extend之后会对list2进行拆分然后接入。
-
列表支持 ’+‘ 和 ’ * ‘,’+‘操作是将两个列表进行合并,,而’ * ‘操作可以理解为重复几次 例如 list1 = [1,2] list1*2-->[1,2,1,2]
-
列表的删除相关操作:
-
del方法:删除指定的索引:list1 = [1,2,3,4] -->del list1[0] -->list1 = [2,3,4]
-
remove()方法:删除指定的元素:list1 = [1,2,3,4] -->list1.remove("2") -->list1 = [1,3,4];若列表存在重复元素,只会删除顺序的第一个元素:list2 = [1,2,3,2,4] -->list2.remove(2) -->list2 = [1,3,2,4]
-
pop()方法:删除指定的索引:list1 = [1,2,3,4] -->list1.pop(1) -->list1 = [1,3,4];默认索引为-1
-
clear()方法:清空列表,列表不会被删除但是列表为空:list1 = [1,2,3,4] -->list1.clear() -->list1 = []
-
列表因为是可以修改的所以我们可以通过 list1[index]=修改后的内容 进行修改
-
列表的查询相关操作:
-
获取单个元素:list1[index]
-
获取元素索引:index()方法:idx = list1.index(num,a,b) a,b不是必须参数,如果不加上a,b那么idx就是列表中num第一次出现的下标,而a,b是用于指定下标从a-->b
-
获取指定元素个数:count()方法:c = list1.count(obj)-->obj出现的次数
-
列表切片:list1[start:stop:step]-->从start开始到stop以step为步长
-
列表遍历相关操作:
-
方法一:直接遍历--> for x in list1:
-
方法二:根据索引--> for i in range(len(list1)):
-
方法三:创建对应的枚举对象 :语法--> enumerate(sequence,[start=0]);枚举对象可以直接遍历,使用枚举函数之后我们再将其列表化即使用list()函数 可以得到列表点集[(索引, 元素)....]如图:
通过不同种遍历方式我们可以得到如下结果:
红线标注的为points[0]和points[1]的分界
-
方法四:利用迭代器 (简单理解的话迭代就是可以遍历);其实判断是否是可迭代对象可以是用 collections模块中的 isinstance()函数-->isinstance(object, collections.Iterable) 判断object是不是可迭代对象。 迭代器是可以记录遍历位置的对象,从第一个元素开始,往后通过next()函数,进行遍历;只能往后,不能往前;判定依据:能作用于next()函数;判定方法:collections模块中 的 isinstance(object,collections.Iterator);迭代器也是可迭代对象,所以也可以作用于for in; 迭代器可以使用iter()函数生成 迭代器生成函数的对象是可迭代对象;迭代器:仅仅在迭代到某个元素时才处理该元素--在此之前,元素可以不存在,在此之后,元素可以被销毁,特别适合用于遍历一些巨大的或是无限的集合--斐波那契数列;统一的访问集合的接口--iter(Iterable){str,list,tuple,dict...}。迭代器的简单使用:使用next()函数,从迭代器中取出下一个对象,从第1个元素开始;在python中,可以直接作用于for in(内部会自动调用迭代器对象的next(),会自动处理迭代完毕的错误) 注意事项:如果迭代完毕再继续迭代,则会报错;迭代器一般不能多次迭代
列表排序操作:
-
方法一:内置函数sorted():可以对所有可迭代对象进行排序;语法:sorted(iterable,key=None,reverse=False) iterable 为可迭代对象,key排序关键字,reverse控制升序降序,默认False为升序;返回值是一个列表类型
-
方式二:列表对象方法;语法:list.sort(key=None,reverse=False),key排序关键字,reverse控制升序降序,默认False为升序;不会产生新的列表,而是对list本身进行排序
列表的乱序和倒叙操作:
乱序:
使用random模块中的shuffle函数
random.shuffle(list1)-->不会产生新的列表,只是针对原列表进行乱序处理
倒叙:
list.reverse()-->不会产生新的列表,只是针对原列表进行乱序处理
切片倒叙 list2 = list1[::-1]