引言
首先说一个概念哈,程序=算法+数据结构,算法是条件语句与循环语句组成的逻辑结构,而数据结构也就是容器. 算法决定数据该如何处理,而容器则决定如何数据如何存储. 不同的语言对容器有不同的实现方式, 但他们的功能都是相似的, 打好容器基础,你就可以在各式各样的语言中来回横跳了
对于任何一个容器来说,它的作用永远是数据的存储,它提供的API接口应该包含基本的增删改查能力与迭代遍历功能,而对于python这样的高级语言来说,你不需要管容器底部是怎么实现的,只需要关注如何使用即可
初始化
service = ['http','ssh','ftp']
通过这样的方式,创建了一个名为service的列表,它按照顺序装有三个元素http,ssh和ftp
根据索引获取
print(service[1]) ##输出第二个元素,ssh
print(service[-1]) ##输出最后一个元素,ftp
属于增删改查中查的部分, 通过索引下标来获取指定元素,http,ssh,ftp的正负下标分别为0,1,2和-3,-2,-1
切片
print(service[1:]) ##打印第一个元素之后的内容
print(service[:-1]) ##打印最后一个元素之前的内容
print(service[::-1]) ##倒序输出
是一种创建列表的方式,切片并没有改变原来的列表而是在原来列表的基础上创建了一个新的列表,每次对service进行切片,都会创建出一个新的列表,原来的列表还是能照常使用
重复
print(service * 3) ##输出三遍
也是一种创建列表的方式,原来的列表依然没有被改变,创建了一个长度为原列表三倍的新列表
连接
service1 = ['nfs','samba']
print(service + service1)
是一种创建列表的方式,通过组合两个列表,获得一个新的列表
成员操作赋
print('nfs' in service) ##判断是否存在
名字可能有点拗口,其实就是判断某个元素是否在列表中存在,其本质和遍历相似,只不过python提供了更方便的接口让你不用写循环也能知道某个元素是否存在,若存在则输出true否则为false
迭代列表
for i in service:
print(i) ##遍历输出每个元素
属于遍历功能,即如果想对列表中每个元素进行某项操作时使用,或者想筛选出特定元素都需要使用遍历
列表里嵌套列表
service2 = [['abc','def','www'],[1,2,3],['mike','tony','sun']]
对其索引:print(service2[2][1]) ##第三个元素中的第二个元素
对其切片:print(service2[:][1]) ##第二个元素
这个对于你们学算法的应该很好理解,嵌套两层就是二维,嵌套三层就是三维
增加元素
增加分为插入和追加,其接口分别为insert(idx,element)和append(element)
- insert有两个参数,第一个是你想要将当前元素插入到哪个位置,第二个参数是需要插入的元素
- append由于默认在列表末尾添加,所以就不需要第一个参数了,例子如下
- 至于extend接口,可以理解为连续append,至于为什么要这么个接口,可能要归结于程序员的懒癌了
1.service.append('firewalld') print(service) ##append:追加一个元素到列表中
2.extend:拉伸 追加多个元素到列表中 service.extend(['mysql','firewalld'])
3.service.insert(1,'samba') ###在指定索引位置插入元素 ##在第二个元素的位置插入samba作为第二个元素
删除
对列表元素的删除操作为pop和remove两种
- pop: 弹出最后一个元素,因为进行过重载,所以支持没有参数与有参数pop(idx),表示弹出第i个元素
- remove:如果知道列表中元素具体是什么,但是不知道索引位置,可以使用remove接口进行删除
1.service.pop() ##弹出最后一个元素
a = service.pop(0) ##弹出第1个元素 ###可以将其赋值
2.service.remove('ssh') ##指定删除对象的名字 ##直接删除,不能将其赋值 ##不能指定序号,只能指定要删除对象
3. del service ##删除列表
del service ##直接删除整个列表
print(service)
替换
其实是增删改查中的改操作,列子如下:
1.service[0] = 'mysql' ##通过索引 重新赋值
2.service[:2] = ['samba','iscsi'] ##通过切片给前两个元素重新赋值
查看
可以查看列表中某个元素出现的次数(因为列表不具有自动排重效果,所以会出现某个元素多次出现的情况),它的api是count
service.count('ssh')
也可以查看某个元素的索引位置,例子如下:
service.index('iscsi') ###最小索引值
service.index('ssh',1,3) ###从1-3中查找【第二个元素和第三个元素之间】【不取上限】
排序
虽然底层算法对于初学者来说有些复杂,但是用起来还是很简单的啦,只需要调用sort接口,就会对列表进行自动排序,同时sort接口也可以指定一些排序的规则,例子如下:
names = ['alice','Bob','coco','Harry']
names.sort()
names ###按照ASCLL排序 ###先排序首字母为大写的,再排序首字母是小写的
names.sort(key=str.lower) ###对字符串排序不区分大小写,相当于将所有元素转换为小写,再排序
names.sort(key=str.upper) ###相当于将所有元素转换为大写,再排序