目录
- 元组的使用
- 拆包和装包
- 元组总结
- 字典
- 增改
- 案例
- 查询
- 删除
- 其他内置函数
元组的使用
#元组
#类似列表,也是一个容器,但是他的内容不可以修改,没有增删改,只能查
#定义,用()
t1=()
print(type(t1))#<class 'tuple'> 空元组
t2=('hello')
print(type(t2))#<class 'str'> 如果只有一个元素,需要在其后面加一个逗号
t3=('hello',)
print(type(t3))#<class 'tuple'>
t4=('hello','hi')
print(type(t4))#<class 'tuple'> 如果有多个元素,其后面则不需要加逗号
#增删改无用
# t1.append()
# t1.pop()
#那么如何放元素进入元组?
tuple2=(1,2,3)
print(tuple2)#(1, 2, 3)
list1=[3,4,7,2,1]
tuple1=tuple(list1)
print(tuple1)#(3, 4, 7, 2, 1)
#元组查询:下标tuple[index] 切片[::]
print(tuple1[0])#3
print(tuple1[-1])#1
print(tuple1[::-1])#(1, 2, 7, 4, 3)
print(tuple1[2:-1])#(7, 2)
#最大值最小值
print(max(tuple1))#7
print(min(tuple1))#1
#求和
print(sum(tuple1))#17
#求长度
print(len(tuple1))#5
#求元组中某个元素的个数
l2=[1,4,4,4,6,7]
#统计元组中4的个数
print(l2.count(4))#3
#统计元组中数字4的下标
print(l2.index(4))#1
拆包和装包
#拆包和装包
#装包 多--->一,将多个数据装进一个包中
names='tom','tony','rose'
print(names)#('tom', 'tony', 'rose')
print(type(names))#<class 'tuple'>
group=100,[1,2,3],'tom',('a','b')
print(group)#(100, [1, 2, 3], 'tom', ('a', 'b'))
print(type(group))#<class 'tuple'>
#拆包 一--->多,将一个序列类型数据拆成多个数据
tuple1=(1,2,3,'tom')
a,b,c,d=tuple1
print(a)#1
print(b)#2
print(c)#3
print(d)#4
print(tuple1)#(1, 2, 3, 'tom')
# 变量个数与元组元素个数不匹配,报错
# a,b=tuple1
# a,b,c,d,e,f=tuple1
#序列的元素个数多于变量个数时
#可将非第一位的变量前加星号(*)
#拆包的变量中只能有一个变量前可加星号(*)
#这个星号表示它后边的变量是个列表
# 变量个数与元组元素个数不匹配,报错
# a,b=tuple1
tuple1=(1,2,3,'tom')
a,*b=tuple1
print(a)#1
print(b)#[2, 3, 'tom']
a,*_,c=tuple1
print("this----------------------")
print(a,c,_)#1 tom [2, 3]
a,c,*_=tuple1
print(a,c,_)#1 2 [3, 'tom']
a,c,*b=tuple1
print(a,c,b)#1 2 [3, 'tom']
#
print(b)#[3, 'tom']
print(*b)#3 tom
#也有元素少于变量的拆包情况, 但元素个数不能少于非带星号的变量个数,这时,带星号的变量将返回一个空的列表
# 变量个数与元组元素个数不匹配,报错
# a,b,c,d,e,f=(1,2)
tuple2=(1,2)
a,b,*c=tuple2#*b表示未知个数0-n
print(a)#1
print(b)#2
print(c)#[]
# print(*c)#空格
元组总结
1.符号:(1,2,3) tuple
2.关键字:tuple
3.元组的关键字只能获取,不能增删改符号:
+
*
is
in
not in系统函数:
len()
max()
min()
sum()
sorted()----能排序,但返回的结果是列表
tuple()—元组类型的强制转换元组自带函数:
index()—返回某元素的位置
count()–返回某元素的个数拆装包:
x,*y=(1,2,3,4,5)
print(y)
print(*y)
字典
增改
# 现在重新开始游戏,貂蝉的武器和积分就不见了,因为貂蝉跟武器没有绑定
'''
字典:
特点:
1.符号
2.关键字
3.保存的元素是:key:value
列表 元组 字典
[] () {}
list tuple dict
ele ele key:value
'''
tuple1=()
print(type(tuple1))#<class 'tuple'>
print(type(tuple()))#<class 'tuple'>
list1=[]
print(type(list1))#<class 'list'>
print(type(list()))#<class 'list'>
#定义空字典
dict1={}
print(type(dict1))#<class 'dict'>
dict2=dict()
print(type(dict2))#<class 'dict'>
#list=['937781164764','lucky',18]
dict3={'ID':'937781164764','name':'lucky','age':18}
#元组转字典
# tuple2=('name','lucky')
# dict4=dict(tuple2)#报错, {'name':xxx,'lucky':xxx}
#列表和元组都可以转为字典,前提是列表中元素都要成对出现
list2=[('name','lucky'),('age',18)]
tuple2=(('name','lucky'),('age',18))
dict4=dict(list2)
print(dict4)#{'name': 'lucky', 'age': 18}
dict4=dict(tuple2)
print(dict4)#{'name': 'lucky', 'age': 18}
#字典的增删改查
#1.增改
#特点:
#如果没有同名的key,则增加
#如果有同名的key,覆盖原来的value---改
dict6={}
dict6['brand']='huawei'
print(dict6)#{'brand': 'huawei'}
dict6['brand']='xiaomi'
print(dict6)#{'brand': 'xiaomi'}
dict6['type']='p30 pro'
dict6['price']='9000'
dict6['color']='黑色'
print(dict6)#{'brand': 'xiaomi', 'type': 'p30 pro', 'price': '9000', 'color': '黑色'}
案例
'''
案例:
用户注册功能
[{一个人的注册信息},{一个人的注册信息},{一个人的注册信息}]
'''
database=[]#模拟数据库,存放多个用户
while True:
print('------欢迎来到用户注册------')
#1定义一个字典
user={}
#2将信息保存到字典中
username = input('请输入用户名')
user['username']=username
password = input('请输入密码')
repassword = input('输入确认密码')
if password==repassword:
user['password']=password
else:
print('两次密码不一致!请重新输入')
continue
email = input('请输入你的邮箱')
user['email']=email
#3保存到数据库
database.append(user)
answer=input('是否继续注册(Y/N)')
if answer!='Y':
break
print(database)
查询
#字典常用方法
#字典key唯一,value可以不唯一
# [{},{},{}]
'''
列表与字典添加元素(元组不能增删改)
list1=[]
list1.append(ele)
dict1={}
dict1[key]=value
修改元素:
list1[index]=newval
dict1[key]=newval
查询元素:
list1[index]-->ele
dict1[key]--->value 字典都是根据key获取value,而不是根据下标
'''
list1=[3,5,7,8]
print(list1[2])#7
dict1={'0':'张三','1':'李四','2':'王五'}
print(dict1['2'])#5
dict2={'张三':100,'李四':99,'王五':89}
print(dict2['王五'])#89
# print(dict2['123'])这种取法如果取不到就会报错
print(dict2.get('王五'))#89
print(dict2.get('111'))#None
print(dict2.get('111',0))#0 如果取不到,返回指定的默认值
#考试分数大于90分的人
#尝试对字典遍历---单独遍历字典的结果是对字典的key进行遍历
for i in dict2:
print(i)
# 张三
# 李四
# 王五
#字典里的函数:
#items() 将字典的键值对保存为列表的保存形式{key:val,key:val}---[(key,val),(key,val)]
# values() 取出字典中所有值存放到列表中-----------------------[val,val,val]
# keys() 取出字典中所有key存放到列表中-----------------------[key,key,key]
#1.items
dict2={'张三':100,'李四':99,'王五':89}
print(dict2.items())#dict_items([('张三', 100), ('李四', 99), ('王五', 89)])
for x in dict2.items():
print(x)
'''
('张三', 100)
('李四', 99)
('王五', 89)
'''
a,b=('张三', 100)#拆包
print(a,b)#张三 100
for key,value in dict2.items():
if value>90:
print(key)
'''
张三
李四
'''
#2.values取出字典中所有值存放到列表中
print(dict2.values())#dict_values([100, 99, 89])
for score in dict2.values():#对列表遍历
print(score)
#求所有学生的考试平均成绩
score_list=dict2.values()
total=sum(score_list)
avg=total/len(score_list)
print(avg)#96.0
#2.keys()
name_list=dict2.keys()
print(name_list)#dict_keys(['张三', '李四', '王五'])
for name in name_list:
print(name)
#找人---- in 可以用于操作字典,用于判断元素有没有在字典的key中出现 。字典中默认找的是key
print('王五' in dict2)#True
删除
#字典删除
#列表删除del list[index]
list1=[3,7,9,0]
del list1[1]
print(list1)#[3, 9, 0]
dict1={'张三':100,'李四':100,'王五':89,'赵柳':99}
del dict1['王五']
print(dict1)#{'张三': 100, '李四': 100, '赵柳': 99}
#del dict1['haha'] 没有则报错
#字典的删除内置函数
# dict1.remove('李四') 报错,没有这个方法
result=dict1.pop('李四') #删除这个键值对并返回对应的value
print(result)#100
print(dict1)#{'张三': 100, '赵柳': 99}
result=dict1.pop('xx','NoEle') #当字典没有这个key,就返回NoEle
print(result)#NoEle
#popitem():随机删除字典中的键值对(一般是从末尾删除元素)
dict1={'张三':100,'李四':100,'王五':89,'赵柳':99}
result=dict1.popitem()
print(result)#('赵柳', 99)
print(dict1)#{'张三': 100, '李四': 100, '王五': 89}
#clear() 清空字典里的元素
print(dict1.clear())#None
print('*'*30)
'''
总结:
del dict[key]
dict.pop(key[,default])
dict.popitem()
dict.clear()
'''
其他内置函数
#其他的内置函数
'''
update() 类似[]+[]两个字典拼接,如果有相同的key则覆盖
'''
dict1={0:'tom',1:'jack',2:'lucy'}
dict2={0:'lily','4':'ruby'}
result=dict1.update(dict2)
print(result)#None
print(dict1)#{0: 'lily', 1: 'jack', 2: 'lucy', '4': 'ruby'}