元组
元组:元组本身是不可变数据类型,没有增删改查
元组可以存储任意数据类型
1.元组的创建
t = (1,2,3,'westos',True)
print(t,type(t))
# 元组里包含可变可变数据类型,可以间接修改元组内容
t1 = ([1,2,3],4)
t1[0].append(5)
print(t1)
# 元组如果只有一个元素的时候
t2 = ('hello',) #不加“,”时t2的类型为str型
print(t2,type(t2))
2.元组的特性
users = ('root','westos','redhat')
passwds = ('123','456','789')
# 索引 切片
print(users[0])
print(users[-1])
print(users[1:])
print(users[:2])
print(users[::-1])
# 重复
print(users[users * 3]) # 不能重复
# 连接
print(users + ('rhce','rhcsa'))
# 成员操作符
print('westos' in users)
print('westos' not in users)
# for循环
for user in users:
print(user)
for index,user in enumerate(users):
print(index,'-->',user)
for user,passwd in zip(users,passwds):
print(user,':',passwd)
t = (1,1.2,True,'westos')
print(t.count('westos'))
print(t.index('westos'))
3.元组的应用
# a,b的值互换
a = 1
b = 2
print(a,b)
a,b = b,a
print(a,b)
#
scores = (100,89,45,78,65)
scoreli = list(scores)
#scoreli.sort()
#print(scoreli)
scores = sorted(scores)
print(scores)
minsore,*middlescore,maxscore = scores # 先排序才可以使用此方法
print(minsore)
print(middlescore)
print(maxscore)
print('最终成绩为:%.2f' %(sum(middlescore)/len(middlescore)))
集合
1.集合的定义
"""
集合里面的元素是不可重复的
"""
s = {1,2,3,1,2,3,4,5}
print(s,type(s))
# 如何定义一个空集合
s2 = {}
print(s2,type(s2)) # 是字典,不是空集合
s3 = set([])
print(s3,type(s3))
# 集合应用
li = [1,2,3,1,2,3] # 去重
print(list(set(li)))
2.集合的特性
"""
集合只支持成员操作符 for循环
"""
# 成员操作符号
s = {1,2,3}
print(1 in s)
# for循环
for i in s :
print(i)
3.集合的常用方法
# 增加
s = {6,7,8,9}
s.add(1)
print(s)
s.update({5,3,2}) # 增加多个
print(s)
# 删除
s.pop()
print(s) # 随即删除
s.remove(6)
print(s)
# 交集、并集、差集、超集、子集、相同元素
s1 = {1,2,3}
s2 = {2,3,4}
print('并集:',s1.union(s2))
print('并集:',s1 | s2)
print('交集:',s1.intersection(s2))
print('交集:',s1 & s2)
print('差集:',s1.difference(s2))
print('差集:',s2.difference(s1))
s3 = {1,2}
s4 = {1,2,3}
print(s3.issuperset(s4)) # s3不是s4的超集
print(s4.issuperset(s3)) # s4是s3的超集
print(s3.issubset(s4)) # s3是s4的子集
print(s3.isdisjoint(s4)) # 是否有一样的元素
4.集合的练习
华为机测题:
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性他先用计算机生成了N个1~1000之间的随机整数(N<=1000),N是用户输入的,对于其中重复的数字,只保留一个,把其余相同的数字去掉,不同的数对应着不同的学生的学号,然后再把这些数从小到大排序,按照排好的顺序去找同学做调查,请你协助明明完成
“去重”与排序工作
import random
s = set([])
for i in range(int(input('N: '))):
s.add(random.randint(1,1000))
print(sorted(s))
字典
1.字典的定义
"""
字典是一个无序的数据集合,通常输出顺序和定义顺序不一样
"""
users = ['user1','user2']
passwds = ['123','456']
print(zip(users,passwds))
print(list(zip(users,passwds)))
print(dict(zip(users,passwds)))
# 定义一个空字典
d = {}
print(type(d))
# 字典中value值可以是任意数据类型
s = {
'westos':[100,99,88],
'redhat':[50,60,70]
}
print(s,type(s))
# 工厂函数
d = dict()
print(d,type(d))
d = dict(a=1,b=2)
print(d,type(d))
# 字典的嵌套
students = {
'03113009':{
'name':'wsp',
'age':'18',
'score':90
},
'12345678':{
'name':'laoli',
'age':'36',
'score':80
}
}
print(students)
print(students['12345678']['name']) # 通过key值找到value值
# 所有的value值是0000的
print({}.fromkeys({'1','2'},'0000'))
2.字典的特性
"""
不支持索引 切片 重复和连接(无意义,因为字典的key值唯一)
"""
d = dict(a=1,b=2)
print(d['a'])
# 成员操作符
print('a' in d)
print('a' not in d)
# for循环
for i in d:
print(i) # 获取到key值
for k in d:
print(k,d[k])
for k,v in d.items():
print(k,v)
3.字典的增、删、改、查
# services = {
# 'http':80,
# 'ftp':21,
# 'mysql':3306
# }
#
# # 增加一个元素(如果key值存在,则更新对应的value值)
# services['ssh'] = 22
# print(services)
#
# services['http'] = 443
# print(services)
#
# # 增加多个key-value值
# services_backup = {
# 'samba':1234
# }
# services.update(services_backup)
# print(services)
#
# services.update(flask=9000,http=8000)
# print(services)
#
# # setdefalut添加key值,如果key存在,不做修改,如果不存在添加
# services.setdefault('http',9090)
# print(services)
#
# services.setdefault('oracle',44575)
# print(services)
#
# # 删除
# del services['http']
# print(services)
#
# # pop删除指定的key的key-value,如果key存在,删除并返回key对应的value,如果不存在,报错
# item = services.pop('mysql')
# print(item)
# print(services)
#
# # popitem 删除最后一个key-value值
# item = services.popitem()
# print(item)
# print(services)
#
# # 清空字典内容
# services.clear()
# print(services)
#
# # 查看
# # 查看字典的key值
# print(services.keys())
#
# # 查看字典的value值
# print(services.values())
#
# # 查看字典的key-value值对
# print(services.items())
#
# # 查看key的value值
# print(services['http'])
#
# # 查看key的value值,如果key不存在默认返回none,key不存在有default则返回default
# print(services.get('https',443))
#
# """
# get方法获取指定key值对应的value值
# 如果key值存在,返回对应的value值
# 如果key值不存在,返回对应的value值
# """
# print(services.get('http','key not exist'))
4.字典练习
"""
数字统计:
1.随即生成1000个整数
2.范围[20,100]
3.升序输出所有不同的数字及每个数字重复的次数
"""
import random
s = []
d = {}
for i in range(1000):
s.append(random.randint(20,100))
s1 = sorted(s)
for j in s1:
d[j] = s1.count(j)
print(d)
"""
1.生成100个卡号
卡号以6102009开头,后面3位一次是(001,002 ... 100)
2.生成关于银行卡号的字典,默认每个卡号的初始密码为‘redhat’
3.输出卡号和密码信息
卡号 密码
6102009001 redhat
"""
s = []
d = {}
for i in range(1,101):
s.append('6102009%.3d' %i)
#print(s)
for j in s:
d[j] = 'redhat'
#print(d)
print('\t卡号\t\t\t密码')
for k in s:
print('\t%s\t%s' %(k,d[k]))