一、列表:
1.创建列表
#列表里:可以储存不同的数据类型
li = [1,1.5,'hello',True]
print(li)
print(type(li))
#列表里也可以嵌套列表(列表也是一种数据类型)
yy = [1,1.5,'hello',True,[1,2,3,4,5]]
print(yy)
print(type(yy))
2.列表的特性
service = ['http','ssh','ftp']
##索引
print(service[0]) ##输出第一个字符串
print(service[-1]) ##输出最后一个字符串
service = ['http','ssh','ftp']
##切片
print(service[1:]) ##输出第一个字符之外的其他字符
print(service[:-1]) ##输出最后一个字符之外的其他字符
print(service[::-1]) ##倒序输出字符
service = ['http','ssh','ftp']
##重复
print(service * 3) ##重复输出3次service内容
service = ['http','ssh','ftp']
##连接
service1 = ['nfs','samba']
print(service + service1) ##将service和service1的输出连接起来
service = ['http','ssh','ftp']
service1 = ['nfs','samba']
##成员操作符
print('nfs' in service) ##当service中有字符nfs时输出True,没有则输出True
print('nfs' in service1)
service = ['http','ssh','ftp']
service1 = ['nfs','samba']
##for循环遍历
for i in service:
print(i)
#列表里嵌套列表
service2 = [['http','80'],['ssh','22'],['ftp','21']]
##索引
print(service2[0][1]) ##先找到service2里的第一个列表,再从这个列表里找到第二个字符
service2 = [['http','80'],['ssh','22'],['ftp','21']]
#切片
print(service2[:][1])
print(service2[:-1][0])
3.列表的增加
service = ['http','ssh','ftp']
print(service + ['firewalld']) ##在列表最后面添加一个字符
service = ['http','ssh','ftp']
##append:追加,追加一个元素到列表中
service.append('firewalld')
print(service)
service = ['http','ssh','ftp']
##extend:拉伸 追加多个元素到列表中
service.extend(['mysql','firewalld'])
print(service)
service = ['http','ssh','ftp']
##insert:在指定索引位置插入元素
service.insert(1,'samba')
print(service)
4.列表的删除
service = ['http','ssh','ftp']
##remove:删除指定的元素
a = service.remove('ssh')
print(service)
service = ['http','ssh','ftp']
##del,直接删除列表在内存中的值,删除后再输出会显示列表没有定义
print(service)
del service
print(service)
5.列表的修改
service = ['http','ssh','ftp']
##通过索引,重新给对应位置赋值
service[0] = 'mysql'
print(service)
service = ['http','ssh','ftp']
##通过切片,可以替换多个位置的索引值
print(service[:2])
service[:2] = ['samba','iscsi']
print(service)
6.列表的查看
service = ['ssh','http','ssh','ftp']
##查看出现的次数
print(service.count('ssh'))
service = ['ssh','http','ssh','ftp']
##查看指定元素的索引值
print(service.index('ssh'))
print(service.index('ssh',1,-1)) ##从索引1到-1中查看ssh的索引值
7.列表的排序
import random
li = list(range(10))
print(li) ##从小到大输出
import random
li = list(range(10))
print(li)
##将列表打乱,随机排序
random.shuffle(li)
print(li)
##枚举:返回索引值和对应的value值
for i,v in enumerate('westos'):
print(i,v)
#zip,使key值和value值对应输出
s1 = 'abc'
s2 = '456'
for i in zip(s1,s2):
print(i)
for i in zip(s1,s2):
print(''.join(i))
zip( ) 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
二、元组:
1.元组的创建
#元组(tuple): 不可变数据类型
t = (1,2.3,True,'westos')
print(t)
print(type(t))
#元组内可以存储任意数据类型
t1 = ([1,2,3],4)
t1[0].append(4) ##给指定索引追加字符
print(t1)
t2 = ('westos',)
print(type(t2))
2.元组的特性
users = ('root','westos','redhat')
passwds = ('123','456','789')
#索引和切片
print(users[0])
print(users[-1])
print(users[1:]) ##输出除了第一个字符的其他字符
print(users[:-1]) ##除了最后一个字符的其他字符
print(users[::-1]) ##倒叙输出
users = ('root','westos','redhat')
passwds = ('123','456','789')
#重复
print(users * 3) ##将元组连续输出三次
passwds = ('123','456','789')
#连接,将指定字符与元组中的字符连接起来
print(passwds + ('012','230'))
users = ('root','westos','redhat')
passwds = ('123','456','789')
#成员操作符,查看元组中是否有指定的字符,有即为正确,没有就为错误
print('redhat' in users)
print('redhat' not in users)
users = ('root','westos','redhat')
passwds = ('123','456','789')
#迭代
for user in users:
print(user)
users = ('root','westos','redhat')
passwds = ('123','456','789')
#按顺序输出元组中的字符
for index,user in enumerate(users):
print('第%d个用户: %s' %(index+1,user))
#把两个元组以key和value值的关系对应起来输出
for user,passwd in zip(users,passwds):
print(user,':',passwd)
3.元组的常用方法
t = (1,2.3,True,'westos','westos',2.3)
#显示元组中某个字符出现的次数
print(t.count('westos'))
#显示元组中某个字符的最小索引位置,如果元组中没有指定字符,输出会报错
print(t.index(2.3))
4.元组的应用场景
scores = (59,89,65,78,100)
#定义为列表来给一个无序数组排序
scoreli = list(scores)
scoreli.sort()
print(scoreli)
#元组的方法来排序
scores = sorted(scores)
print(scores)
#利用内置函数来完成平均成绩的求法,去掉了最高分和最低分
scores = (59,89,65,78,100)
minscore,*middlescore,maxscore = scores
print(minscore)
print(middlescore)
print(maxscore)
#sum,求和 len,变量内字符的个数
print('最终成绩为: %.2f' %(sum(middlescore)/len(middlescore)))
三、集合:
1.集合的创建
#集合里面的元素是不可重复的
s = {1,2,3,1,2,3,4,5}
print(type(s))
print(s)
s1 = set([])
print(type(s1))
#集合的应用
li = [1,2,3,1,2,3]
print(list(set(li)))
2.集合的特性
#集合只支持成员操作符和for循环
s = {1,2,3}
print(1 in s)
for i in s:
print(i)
#按照key值和value值的对应关系输出s中的值
for i,v in enumerate(s):
print('index: %s,value: %s' %(i,v))
3.集合的常用方法
#集合:无序的数据类型
#添加顺序和在集合中的存储顺序是不一样的
s = {6,7,8,9}
#增加
s.add(2)
print(s)
#增加多个数据,已有的数据默认不会再次添加
s.update({5,2,3})
print(s)
s = {6,7,8,9}
#删除,从集合中将数据弹出(丢弃)
s.pop()
print(s)
#指定要删除的数据
s.remove(7)
print(s)
#集合的交集
s1 = {1,2,3}
s2 = {2,3,4}
#两种不同的命令方式都是为了得到s1与s2的交集
print('交集: ',s1.intersection(s2))
print('交集: ',s1 & s2)
s1 = {1,2,3}
s2 = {2,3,4}
#两种不同的命令方式都是为了得到s1与s2的并集
print('并集: ',s1.union(s2))
print('并集: ',s1 | s2)
s1 = {1,2,3}
s2 = {2,3,4}
#差集
print('差集: ',s1.difference(s2)) #s1 - (s1&s2) ## s1 中与 s2 不同的数
print('差集: ',s2.difference(s1)) #s2 - (s1&s2) ## s2 中与 s1 不同的数
s3 = {4,5,6}
s4 = {1,2,3}
print(s3.issuperset(s4)) ##判断 s3 是否是 s4 的超集
print(s3.issubset(s4)) ##判断集合 s3 的所有元素是否都包含在集合 s4 中
print(s3.isdisjoint(s4)) ##判断集合 s4 中是否有包含 集合 s3 的元素
超集定义:如果一个集合S2中的每一个元素都在集合S1中,且集合S1中可能包含S2中没有的元素,则集合S1就是S2的一个超集。 S1是S2的超集,则S2是S1的真子集,反之亦然