一.元组
1. 认识元组
-
元组是不可变的(不支持增删改);
-
元组是有序的(支持下标操作);
-
元组的元素可以是任何类型的数据。
元组是不可变的列表:列表中和可变无关的操作,元组都支持
元组不只是不可变的列表:
1)只有一个元素的元素 ---- (元素,)
2)元组的()没有歧义的时候可以省略
3)使用多个变量直接获取元素
a.变量的个数和元组个数一致
b.变量个数小于元组中元素的个数,必须在某一变量前面加星号
获取元素的时候让不带星号的按位置先取元素,然后剩下的数据全部给带星号的变量(带星号的变量会变成一个列表)
2.元组的相关操作
1)下标获取元素和切片
t3 = ('长津湖', '战狼', '哈利波特', '黑客帝国')
print(t3[-1]) #('黑客帝国',)
print(t3[1:2]) #('战狼',)
2)遍历
t3 = ('长津湖', '战狼', '哈利波特', '黑客帝国')
for x in t3:
print(x,end=',') # 长津湖,战狼,哈利波特,黑客帝国,
print()
for index in range(len(t3)):
print(index, t3[index],end=';') # 0 长津湖;1 战狼;2 哈利波特;3 黑客帝国;
3)运算和比较
t1 = (1, 2, 3, 4, 5, 6, 7)
t2 = ('a', 'b')
print(t1 + t2) # (1, 2, 3, 4, 5, 6, 7, 'a', 'b')
print(t1 * 2) # (1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7)
print(t1 == t2)# False
3.元组的相关方法和函数
t1 = (1, 2, 3, 4, 5, 6, 7)
t2 = ('a', 'b')
#index---返回指定下标对应的元素
print(t1.index(5)) # 4
#count---返回指定元素在元组中出现的次数
print(t1.count(2))# 1
#sum---返回数字元组中元素和
print(sum(t1))# 28
#sorted----按照升序产生一个新元组
print(sorted(t1))# [1, 2, 3, 4, 5, 6, 7]
#max,min,len和列表中相同
print(max(t1), min(t1), len(t1)) # 7 1 7
#in---判断元组中是否存在指定元素
print(2 in t1)# True
二.字典
1.认识字典-----保存多个意义不同的数据
1)字典是容器型数据类型(序列),将{}作为容器的标志,里面多个键值对用逗号隔开(一个键值对就是字典的一个元素)
2)字典是可变的(支持增删改),字典无序(不支持下标操作)
3)元素:字典必须是键值对
键:必须是不可变的数据 —如果可变会报错
# dict1 = {[1,2,3]:10}# TypeError: unhashable type: 'list'
# dict1={{'a':10}:10}# TypeError: unhashable type: 'dict'
值:任何类型的数据都可以
2.查询字典的值
1)查字典单个值
字典[键] ----获取对应的值-----键不存在会报错
字典.get(键)-----见不存在,会返回None
dict1 = {'name': '张明洋', 'age': 21, 'scores': {'语文': 98, '数学': 100, '英语': 80}}
print(dict1['scores']) # {'语文': 98, '数学': 100, '英语': 80}
# print(dict1['gender']) # KeyError: 'gender'
print(dict1.get('age')) # 21
print(dict1.get('gender')) # None
print(dict1.get('gender', '男'))# print(dict1.get('gender', '男'))
2)遍历
语法:
for 键 in 字典:
循环体
dict1 = {'name': '张明洋', 'age': 21, 'scores': {'语文': 98, '数学': 100, '英语': 80}}
for key in dict1:
print(key,dict1[key])
'''
name 张明洋
age 21
scores {'语文': 98, '数学': 100, '英语': 80}
'''
3.增改
字典[键] = 值 -----如果键存在就是修改,不存在就是增加一个新的键值对
dict1 = {'name': '张明洋', 'age': 21, 'scores': {'语文': 98, '数学': 100, '英语': 80}}
print(dict1)
dict1['name']='徐望'
dict1['gender']='男'
print(dict1)
'''
{'name': '张明洋', 'age': 21, 'scores': {'语文': 98, '数学': 100, '英语': 80}}
{'name': '徐望', 'age': 21, 'scores': {'语文': 98, '数学': 100, '英语': 80}}
{'name': '徐望', 'age': 21, 'scores': {'语文': 98, '数学': 100, '英语': 80}, 'gender': '男'}
'''
字典.setdefault(键,值)------如果键存在,不修改;键不存在才会修改
dict1 = {'name': '徐望', 'age': 21, 'scores': {'语文': 98, '数学': 100, '英语': 80}}
dict1.setdefault('name','张三')
print(dict1)
dict1.setdefault('breed','dog')
print(dict1)
'''
{'name': '徐望', 'age': 21, 'scores': {'语文': 98, '数学': 100, '英语': 80}}
{'name': '徐望', 'age': 21, 'scores': {'语文': 98, '数学': 100, '英语': 80}, 'breed': 'dog'}
'''
4.删除
del 字典[键]-------删除指定键对应的键值对
dict1 = {'name': '张明洋', 'age': 21, 'scores': {'语文': 98, '数学': 100, '英语': 80}}
print(dict1)
del dict1['name']
print(dict1)
'''
{'name': '张明洋', 'age': 21, 'scores': {'语文': 98, '数学': 100, '英语': 80}}
{'age': 21, 'scores': {'语文': 98, '数学': 100, '英语': 80}}
'''
字典.pop(键)—取出指定键对应的键值对
dict1 = {'name': '张明洋', 'age': 21, 'scores': {'语文': 98, '数学': 100, '英语': 80}}
dict1.pop('age')
print(dict1)
res=dict1['scores'].pop('数学')
print(dict1)
print(res)
'''
{'name': '张明洋', 'scores': {'语文': 98, '数学': 100, '英语': 80}}
{'name': '张明洋', 'scores': {'语文': 98, '英语': 80}}
100
'''
5.相关操作—针对键的操作
字典不支持+,*,<,>,<=,>=;
字典支持in和not in
键 in 字典 —判断字典中是否存在指定的键
6.相关函数
1)max,min,sum,sorted字典都支持,但是一般不用(操作对象都是键)
2)len(字典)
3)dict(数据)-------将指定数据转换成字典
要把数据转换成字典,数据必须满足一下要求:
a.数据本身必须是一个序列
b.数列中的元素有且只有两个元素的小序列
c.小序列中的第一个元素是不可变的数据
data1=['ab',(10,20),['name','zs']]
result=dict(data1)
print(result) # {'a': 'b', 10: 20, 'name': 'zs'}
补充:将字典转换成列表或者元组的时候,只会把字典的键取出来作为其中的元素
result={'a': 'b', 10: 20, 'name': 'zs'}
result=list(result) # ['a', 10, 'name']
result=tuple(result) # ('a', 10, 'name')
7.相关函数
字典.clear()-清空字典
字典.copy()-复制一个新的字典
字典.keys() -获取所有的键,返回一个序列
字典.values() – 获取所有的值,返回一个序列
字典.items() – 将字典的键值对转换成元组,以序列的形式返回
字典.update() ----同时添加多个键值对
d1={'a':10,'b':20,'c':30}
print(d1) # {'a': 10, 'b': 20, 'c': 30}
d2=d1.copy()
d2.clear()
print(d2){}
print(d1.keys()) # dict_keys(['a', 'b', 'c'])
print(d1.values()) # dict_values([10, 20, 30])
print(d1.items()) # dict_items([('a', 10), ('b', 20), ('c', 30)])
for x,y in d1.items():
print(x,y)
'''
a 10
b 20
c 30
'''
print(d1) # {'a': 10, 'b': 20, 'c': 30}
d1.update({'d':40,'e':50})
print(d1) # {'a': 10, 'b': 20, 'c': 30, 'd': 40, 'e': 50}