python数据结构-列表
列表是序列中的一种,序列包括字符串,列表,元组。其中序列是python中最基本的数据结构,序列中的每个元素都有编号(索引)。
通用的序列操作:索引,切片,相加,相乘,和成员资格检查,另外python还提供了一些内置函数,可用于确定序列的长度以及找出序列中的最大值和最小值
索引:序列中的所有元素都有编号-从0开始递增,当你使用负数索引时,python将从右开始往左数,因此-1是最后一个元素的位置
>>>greeting = ''hello"
>>> greeting[0]
'h'
>>>greeting[-1]
'o'
切片:通过切片来访问特定范围内的元素,为此可使用两个索引,并用冒号分隔,其中[a:b:c],a表示第一个索引的位置,b表示第二个索引的位置,c表示步长,当从左往右切片是,步长必须为正整数,否则切出来的就是个[],同理当从右往左切片,步长必须为负整数,当不知道起始索引时,起始索引为0,当不知道结束索引时,结束索引为最后一个元素位置,步长默认为1
>>>numbers = [1,2,3,4,5,6,7,8,9,10]
>>>numbers[3:6] [4,5,6]
>>>numbers[-3:-1] [8,9]
>>>numbers[-3:0] []
>>>numbers[-3:] [8,9,10]
>>>numbers[:3] [1,2,3]
>>>numbers[:10:2] [1,3,5,7,9]
>>>numbers[8:3:-1] [9,8,7,6,5]
相加:可使用加法运算符来拼接序列,但是一般而言,不能拼接不同类型的序列,[1,2]+"hello" 拼接将会报错
相乘:将序列与数x相乘时,将重复这个序列x次来创建一个新序列
>>>'python'*2
pythonpython
成员资格检查:要检查特定的值是否包含在序列中,可使用运算符in,如存在则返回True,否则返回False.存在in同样存在not in,其逻辑和in逻辑相反,当序列为字符串时,则检查的是是否为子字符串。
>>>num = [1,2,3]
>>>1 in num
True
python的主力列表:列表也是序列,它不同元组和字符串,列表是可变的,即可修改其内容,另外还有很多独特的方法
列表的创建:1:可直接指定 b = [1,2] 2:使用内置函数list(arg)来创建列表,当arg为空时,表示创建一个空列表,arg可以是任何的序列 list('python') -> ['p','y','t','h','o','n']
列表操作:
1,修改列表:给元素赋值 ,通过使用索引来给列表中的指定值赋值
>>>n = [1,2,3]
>>>n[1] = 1
>>>n
[1,1,3]
2,删除元素 通过del来删除列表中的指定值 del n[2],del不仅可以用来删除列表元素,还可以删除变量,字典。
>>>del n[2]
>>>n
[1,2]
3,给切片赋值:通过使用切片赋值,可将切片替换为长度与其不同的序列,也可以通过切片来进行插入和删除
>>>num = [2,3,4,5]
>>>num[0:1] = [1,2]
>>>num
[1,2,3,4,5]
列表方法:方法是与对象紧密联系的函数。方法的调用和函数调用很像,只是方法是通过对象来调用的类似于object.method(arguments)
1,append : 方法append是将一个对象附加到列表末尾。append是在原列表的基础上修改。
2,clear:方法clear就地清空列表的内容
3,copy:复制列表,创建一个新的副本,本同于使用切片num[:]或list(num),
4,count:方法count计算指定的元素在列表中出现了多少次
5,extend:方法extend让你能同时将多个值附加到列表末尾
6,index:方法index在列表中查找指定值第一次出现的索引
7,insert:方法insert用于将一根对象插入列表,接收两个参数,第一个为索引位置,第二个为插入的对象
8,pop:方法pop从列表中删除一根元素,并返回这一元素,当没参数的时候返回最后一个值,当指定索引时,返回指 定的值
9,remove:用于删除第一个为指定值的元素
10,reverse:按相反的顺序排列列表中的元素,reversed函数可以对指定的序列逆序排列,并返回一根迭代器
11,sort:对列表就地排序,sorted则是获取排序后的副本,这是一个排序后的新列表
12,sort的高级排序:可以对列表进行指定排序sort(key,reverse)key为指定的排序函数,reverse确定是否要按相反的 顺序对列表进行排序,x = ["aaaaa","aa","aaa","a","aaaa"] x.sort(key=len,reverse=True)