1.列表
1.列表和数组的区别:
- 数组:存储同一数据类型的集和
- 列表:存储不同数据类型的同一集和
2.列表的特性
service = ['http','ssh','ftp','dns']
1)索引
service[0] #列表第一个
service[-1] #列表倒数第一个
2)切片
service[1:] #2到最后
service[:-1] #除了最后一个
service[::-1] #倒序
3)重复
service * 2
4)连接
service1 = ['mysql','firewalld']
service + service1
5)
目标是否在列表中,如果在返回True,如果不在返回False
'mysql' in service
'mysql' in service1
6)迭代:循环遍历
print('显示所有服务'.center(50,'*'))
for se in service:
print(se)
3.列表里嵌套列表
service2 = [['http',80],['ssh',22],['ftp',21]]
1)索引
service2[0][1] #第一层列表里的第一个列表,中的第二个
service2[-1][1] #第一层列表里的倒数第一个列表,中的第二个
2)切片
print(service2[:][1])
print(service2[:-1][0])
print(service2[0][:-1])
实例:
假定有下面的列表:
names = [‘fentiao’,‘fendai’,‘fensi’,‘apple’]
输出结果为: ‘I have fentiao, fendai, fensi and apple.’
names = ['fentiao','fendai','fensi','apple']
print('I have ' + ','.join(names[:-1]) + ' and ' + names[-1])
4.列表的增加
service = ['http','ssh','ftp','dns']
print(service + ['firewalld'])
2 append:追加,追加一个元素到列表中
service.append('firewalld')
print(service)
3. extend:拉伸 追加多个元素到列表中
service.extend(['mysql','firewalld'])
print(service)
4.insert:在指定索引位置插入元素
service.insert(1,'samba')
print(service)
5.列表的删除
service = ['http','ssh','ftp','dns']
1)弹出pop
弹出的值可以继续使用
out=service.pop()
print(out)
弹出指定元素:
a=service.pop(0) #弹出第一个
print(a)
2)remove:删除指定元素
清空内存地址(从内存中直接删除)
a = service.remove('ssh')
print(service)
3)从内存中删除列表
del service
print(service)
(列表被删除就不能使用了)
6.列表的修改
service = ['http','ssh','ftp','dns']
1)通过索引,重新赋值
service[0] = 'mysql'
print(service)
2)通过切片,重新赋值
print(service[:2])
service[:2] = ['samba','nfs']
print(service)
7.列表的查看
service = ['ftp','ssh','ftp','dns']
1)查看出现的次数
print(service.count('ftp'))
print(service.count('dns'))
2.查看指定元素的索引值(可以指定索引范围查看)
print(service.index('ssh'))
print(service.index('ftp',1,4)) #1-4内查找
8.列表的排序
1)sort()函数排序:默认ASCII码排序
2)将原有的列表顺序打乱
import random
li = list(range(10)) #输出1-10
print(li)
random.shuffle(li) #打乱顺序
print(li)
9.实例:
1)用户管理
"""
1.系统里面有多个用户,用户的信息目前保存在列表里面
users = ['root','westos']
passwd = ['123','456']
2.用户登陆(判断用户登陆是否成功
1).判断用户是否存在
2).如果存在
1).判断用户密码是否正确
如果正确,登陆成功,推出循环
如果密码不正确,重新登陆,总共有三次机会登陆
3).如果用户不存在
重新登陆,总共有三次机会
"""
users = ['root','westos']
passwords = ['123','456']
#尝试登录次数
count = 0
while count < 3:
inuser = input('用户名: ')
inpassword = input('密码: ')
count += 1
if inuser in users:
index = users.index(inuser)
password = passwords[index]
if inpassword == password:
print('%s登录成功' %(inuser))
break
else:
print('%s登录失败 : 密码错误' %inuser)
else:
print('用户%s不存在' %inuser)
else:
print('尝试超过三次,请稍后重试')
2.内置方法
1.两数中的较小数
min(2,3)
结果:2
结果:2
max(2,3)
结果:3
3.求和
sum(range(1,101)) #1-100的和
结果:5050
sum(range(1,101,2)) #1-100奇数和
结果:2500
sum(range(2,101,2)) #1-100偶数和
结果:2550
4.枚举:返回索引值和对应的value值
for i,v in enumerate('hello'):
print(i,v)
s1 = 'abc'
s2 = '123'
for i in zip(s1,s2):
print(i)
for i in zip(s1,s2):
print('-'.join(i))
3.元组
1.元组(tuple):
- 元组本身是不可变数据类型,没有增删改查
- 元组内可以存储任意数据类型
t=(1,2.3,True,'star')
print(t)
print(type(t))
- 元组里面包含可变数据类型,可以间接修改元组内容
t1 = ([1,2,3],4)
t1[0].append(4) #t1[0]:元组中的第一个元素,即[1,2,3]
print(t1)
- 元组里如果只有一个元素的时候,后面要加逗号,否则数据类型不确定
t2 = ('hello',)
print(type(t2))
如果不加逗号:
2.元组的特性
1)索引
allowusers = ('root','westos','redhat')
allowpasswd = ('123','456','789')
print(allowusers[0])
print(allowusers[-1])
2)切片
print(allowusers[1:])
print(allowusers[:-1])
print(allowusers[::-1])
3)重复
print(allowusers * 3)
4)连接
print(allowusers + ('linux','python'))
5)成员操作符
print('westos' in allowusers)
print('westos' not in allowusers)
6)迭代(for循环)
for user in allowusers:
print(user)
7)枚举
for index,user in enumerate(allowusers):
print('第%d个白名单用户: %s' %(index+1,user))
for user,passwd in zip(allowusers,allowpasswd):
print(user,':',passwd)
3.元组的常用方法
t = (1,2.3,True,'linux')
1)统计出现次数
print(t.count('linux'))
2)查看索引值
print(t.index(1))
4.元组的应用场景
1)
- 元组的赋值,有多少个元素,就用多少个变量接收
t = ('westos',11,100)
name,age,score = t
print(name,age,score)
2)排序
1>.sort() 方法排序
scores = (100,89,45,78,65)
scoresLi = list(scores) #转换为列表
scoresLi.sort() #排序
print(scoresLi)
2>sorted() 函数排序
scores = sorted(scores)
print(scores)
3)
minscore,*middlescore,maxscore = scores #*表示可以接收多个值
print(minscore)
print(middlescore)
print(maxscore)