Python中的列表
一、什么是列表
Python列表是线性表的一种表示方式。一个列表是n个数据元素的有限序列(a1,a2,…,an)。元素之间是相邻关系,即第i-1个元素领先于第i个元素,第i个元素领先于第i+1个元素。可以将第i-1个元素称为第i个元素的直接前驱元素,第i+1个元素称为第i个元素的直接后继元素。表中元素的个数为表的长度,长度为0的表称为空表。
Python列表中所存储元素的具体含义,在不同的情况下可以不同,它可以是一个数,也可以是字符串,甚至是更复杂的信息。它可以存储Python的标准类型,也可以存储自定义的数据结构及对象。Python对列表也提供了非常便捷的操作,列表可以执行pop、sort、append、remove等操作,也可以合并其它列表,或者将列表切片(切分出子列表)。
1、列表的结构
python的列表,相当于其他编程语言的数组。
>>> mylist = [1,2,3,4]
>>> mylist
[1, 2, 3, 4]
2、列表的特点
● 列表中所有的数据都是按顺序排列的,也就是说,列表属于顺序类型
● 列表找那个的所有数据都是有两个整数类型的索引,通过制定索引总能映射到唯一确定的数据
● 列表中可以存在重复的数据
● 列表中可以保存任何类型的数据,多种类型的数据可以混合存储。
● 列表可以根据需要动态的伸缩,也就是说,系统会根据需要动态的分配和回收内存。因此无需事先声明列表的容量。
二、列表的创建
●列表中可以存储任意类型的对象
创建列表的两种方法
1、使用中括号[]
L=['python',19,True]print(L)['python',19,True]
空列表创建
L=[]
2、使用list的构造方法
L=list(range(0,8,2))print(L)[0,2,4,6]
空列表的创建
L=list()print(L)[]
三、列表的增删改查
1、列表查操作
a)、列表中元素的索引
列表中的每个元素都有两个整数类型的索引
0 1 2 3 4 正数索引
--------------------------
| a | b | c | d | e | 列表
--------------------------
-5 -4 -3 -2 -1 负数索引
b)、获取列表中指定元素的索引
● index方法
查找元素的指定索引,如果索引不存在会抛出值错误。可以指定查找索引的start和stop。
L=[1,2,6,9,4,6,7]print(L.index(2))#1print(L.index(6))#2相同元素返回第一个元素的索引print(L.index(11))#ValueError:11isnotinlist不存在的元素,会抛出值错误print(L.index(2,0,5))#1查找元素2的索引,从索引0开始,至5结束,但不包含5print(L.index(6,3,6))#5查看元素6的索引,从索引0开始,至6结束,但不包含6
c)、使用[n]获得列表中元素,但一次只能获得一个元素
L=[1,2,6,9,4,6,7]print(L[0])#1获取索引为0的元素print(L[-3])#4获取索引为-3的元素print(L[-8])#IndexError:listindexoutofrange如果索引不存在,则索引越界错误。
d)、使用切片或者列表中的元素,一次获得多个元素
● 语法格式 [start:stop:step]
1、得到的切片仍然是列表,是原始列表片段的一份拷贝
2、得到的切片不包括索引stop对应的元素
3、如果不指定step,其默认值为1,此时语法格式可以简化为[start:stop]
4、当step为正数时,
如果不指定start,切片的第一个元素默认为列表的第一个元素
如果不指定stop,切片的最后一个元素默认是列表的最后一个元素
从索引start开始计算切片
5、当step为负数时,
如果不指定start,切片的第一个元素默认是列表的最后一个元素
如果不指定stop,切片的最后一个元素默认为列表的第一个元素
从索引start开始往前计算切片
L=[5,6,3,1,9,8,4]print(L[1:5])#[6,3,1,9]print(L[::])#[5,6,3,1,9,8,4]列表所有值print(L[::-1])#[4,8,9,1,3,6,5]列表所有值反转print(L[:3:-1])#[4,8,9]step为负数时,不指定start,则为最后一个元素,stop为3则是索引3,步长为1print(L[-3::-1])#[9,1,3,6,5]step为负数时,不指定stop,则为最后一个元素,start为索引-3对应的值,步长为1
● 索引切片是允许越界的
L=[5,6,3,1,9,8,4]print(L[:100])#[5,6,3,1,9,8,4]#起始索引不指定,默认为第一个元素.但100超出最大索引,则打印全部列表print(L[-100:])#[5,6,3,1,9,8,4]#结束索引不指定,默认为最后一个元素,起始索引为-100(-7最后一个负数索引),打印全部列表
● 调用slice构造方法
slice()list[slice(start,stop,step)]L=[5,6,3,1,9,8,4]print(L[slice(1,5,2)])#[6,1]print(L[1:5:2])#[6,1]print(L[slice(None,None,None)])#[5,6,3,1,9,8,4],默认值为Noneprint(L[::])#[5,6,3,1,9,8,4]
e) 、'in' or 'not in'检查元素是否存在列表中
L=[5,6,3,1,9,8,4]inprint(3inL)#存在则为TrueTrueprint(11inL)#不存在为FalseFalsenotinprint(1notinL)1存在列表中,notin返回为FalseFalseprint(11notinL)11不存在列表中,in返回为TrueTrue
2、列表增操作
a)、使用append()函数
'''append()方法,在末尾添加值'''L=[1,2,3,4]L.append(5)print(L)#[1,2,3,4,5]L.append([7,8])print(L)#[1,2,3,4,5,[7,8]]
b)、使用extend()方法,将所有元素依此添加至末尾
'''调用extend方法,list.extend([])小括号中是方括号'''L=[1,2,3,4]L.extend([1,2])print(L)[1,2,3,4,1,2]
c)、调用insert方法
'''调用insert方法,将值插入指定位置'''L=[1,2,3,4]L.insert(1,6)print(L)#[1,6,2,3,4]#在列表末尾L.insert(len(L),10)print(L)#[1,6,2,3,4,10]
d)、为指定的切片赋予一个新值
L=[2,3,4,1]L[2:2]=[5,6]print(L)L=[2,3,4,1]L[len(L):]=[7,8]print(L)
3、列表改操作
想要修改列表中的元素,有两种常见的方式
a)、为指定索引的元素赋予一个新值(一次只修改一个元素)
'''将索引为1对应的元素值改为9,一次只修改一个值'''L=[3,2,0,1,2,1]L[1]=9print(L)[3,9,0,1,2,1]
b)、指定多个索引,一次修改多个元素
'''修改元素索引1:4的值,对应值要使用[]左边取得的索引值可以和右边赋予的值个数不相同'''L=[3,2,0,1,2,1]L[1:4]=[4,5,6]print(L)[3,4,5,6,2,1]L[1:4]=[3,7]print(L)[3,3,7,2,1]L[2:3]=[9]print(L)[3,3,9,2,1]
4、列表删操作
a) 、调用方法remove一次只删除一个元素,如果有相同元素,则删除第一个
L=[2,3,4,5,6]L.remove(3)print(L)L=[3,4,3,1,2]L.remove(3)print(L)
b)、调用方法pop,一次只删除一个指定索引的元素。
如果指定的索引不存在,会抛出index error,索引越界。如果不指定pop删除的索引,那么将删除列表中最后一个元素。
L=['a','b','c','d','e']print(L.pop(1))#b,pop实际有返回值print(L)#['a','c','d','e']print(L.pop())print(L)#['a','b','c','d']
c)、使用del语句,一次至少删除一个或多个元素
L=[1,2,3,4,5,6]delL[1]print(L)delL[1:3]print(L)
d)、给指定的切片赋值一个空列表,一次至少删除一个或多个元素
L=[1,2,3,4,5,6,7,8]L[2:3]=[]print(L)#[1,2,3,5,6,7,8]L[3:6]=[]print(L)##[1,2,3,8]
e)、调用方法clear清空列表
L=[1,2,3,4,5]L.clear()print(L)#[]
四、使用加法和乘法对列表进行操作
1、使用加法对列表进行操作,当使用+=运算符时候会对列表本身产生影响
L1=[1,2]L2=[3,4]L3=L1+L2print(L1,L2,L3)#列表之间相加[1,2][3,4][1,2,3,4]L1=L2=[1,2]L1+=[3,4]print(L1,L2)#使用+=运算符会对L2也产生影响[1,2,3,4][1,2,3,4]L1=[1,2]L2=L1[:]L1+=[3,4]print(L1,L2)#[1,2,3,4][1,2]
2、使用乘法对列表进行操作,使用*=运算符时候会对列表本身产生影响
L1=[1,2,3]L2=[4,5,6]L1=L1*2print(L1)#[1,2,3,1,2,3]L1=L2=[1,2]L1*=2print(L1,L2)#[1,2,1,2][1,2,1,2]L1=[0]L1*=5print(L1)#[0,0,0,0,0]可用于创建指定元素个数的列表
五、列表反转
1、调用方法 reverse,对列表中所有元素进行反转
L=[1,2,3,4,5]L.reverse()print(L)
2、调用内置函数reversed,使用reversed进行反转的列表不发生改变,reversed返回值是一个迭代器对象
L=[1,2,3,4,5]L1=reversed(L)print(L1)#<list_reverseiteratorobjectat0x7f8f070f1390>print(list(L1))#[5,4,3,2,1]
六、列表的排序
1、调用方法sort()
#sort(),会对列表本身造成影响L2=['java','python','shell']L2.sort(key=len)print(L2)#根据字符串长度进行排序,['java','shell','python']L2=[1,3,4,2,6,9,8,7]L2.sort()print(L2)#[1,2,3,4,6,7,8,9]
2、调用内置函数sorted()
sorted(),不会对列表本身造成影响L2=['java','shell','python']print(sorted(L2,key=str.upper))#['java','python','shell']L2=[1,3,4,2,6,9,8,7]print(sorted(L2))#[1,2,3,4,6,7,8,9]print(L2)#[1,3,4,2,6,9,8,7]
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。