第七天元组 |
学习目的:
一、元组的学习(元组的应用场景、定义元组、元组常见的操作)
二、字典的学习(字典的应用场景、字典的语法、列表的常用操作、字典的遍历循环)
三、集合
一、元组的定义
元组用于:可以存储多个数据,用元组操作不可修改的数据,而列表存储可修改的数据
不支持修改,支持查询
格式:(),里面用“,”隔开,最好都是相同数据
# 1、定义多个数据的元组
t1 = (1,2,3)
print(t1,type(t1)) # (1, 2, 3) <class 'tuple'>
# 2、定义单个数据的元组
t1 = (1,) # (1,) <class 'tuple'>
print(t1,type(t1))
注意:元组定义单个数据的时候,必须加“,”,否则为原有数据的数据类型
# t1 = (1) # 1 <class 'int'>
# t1 = ('qqq') # qqq <class 'str'>
t1 = ('qqq',) # ('qqq',) <class 'tuple'>
print(t1,type(t1))
二、元组的常见操作之查找
元组数据不支持修改,只支持查找
1、按下标查找数据
2、index(数据),若存在返回下标,不存在,报错
3、count(查找的数据)统计某个数据在当前元组出现的次数
4、len(元组名)统计元组数据的个数
1、按照下标查找数据
t1 = ('aa','bb','cc','bb')
# 1、下标
print(t1[0]) # aa
2、按照函数查找数据
index()、count()、len()
# 2、index()
print(t1.index('aa')) # 0
# 3、count()
print(t1.count('aa')) # 1
print(t1.count('bb')) # 2
# 4、len()
print(len(t1)) # 4
三、元组数据之修改
一般情况是不修改的,工作中尽可能不要修改!!!
直接修改,一般会报错,(元组数据不支持修改)
t1 = ('aa','bb','cc','bb')
t1[0] = 'qqq' # 'tuple' object does not support item assignment
想要修改,修改嵌套在元组里面的列表!!
t2 = ('aa','bb',['cc','bb'])
print(t2[2][0]) # cc
t2[2][0] = 'Tom'
print(t2) # ('aa', 'bb', ['Tom', 'bb'])
四、总结
1、不能修改的数据,用元组来存储
2、单个数据存储,加","
3、元组常用的操作方法:
1、按下标查找数据
2、index(数据),若存在返回下标,不存在,报错
3、count(查找的数据)统计某个数据在当前元组出现的次数
4、len(元组名)统计元组数据的个数
4、一般不能修改元组数据,可以修改嵌套在元组里面的列表数据
第八天字典 |
一、字典
1、了解字典
1、字典的应用场景:多个数据,无论后期数据如何变化,只需按照对应的键的名字查找数据即可。字典数据和数据顺序无关,不支持下标。
2、字典的形式:字典里的数据以键值对的形式出现
3、字典的语法dict = {’’:’’,’’:’’,’’:’’}
4、常见操作
5、字典的循环遍历
2、创建字典的语法
1、创建有数据的字典 name的值Tom;age:20;gender:男
dict1 = {'name':'Tom','age':20,'gender':'男'}
print(dict1) # {'name': 'Tom', 'age': 20, 'gender': '男'}
2、创建空字典(两种方式)
dict2 = {}
print(type(dict2)) # <class 'dict'>
dict1 = dict()
print(type(dict1)) # <class 'dict'>
二、字典的常见操作(字典为可变类型)
- 增
字典序列[key] = 值
1、新增数据必须是一个键值对数据
2、语法:字典序列[key] = 值
3、key存在则修改key对于的值,若key不存在,则增加此键值对
dict = {'name':'Tom','age':20,'gender':'男'}
# dict['name'] = 'Jerry' # {'name': 'Jerry', 'age': 20, 'gender': '男'}
dict['birthday'] = '12月5日' # {'name': 'Tom', 'age': 20, 'gender': '男', 'birthday': '12月5日'}
print(dict)
- 删除
del 字典序列、del(字典序列[‘key’])、clear()
1、删除字典或删除字典指定键值对,语法:del 字典序列 del(字典序列) del 字典序列[key]
2、清空字典clear(),语法:字典序列.clear()
3、[],里面写:‘key’
4、删除字典序列没有的数据,报错
# 1、增:增加一个键值对,语法:字典序列[key] = 值
dict = {'name':'Tom','age':20,'gender':'男'}
# dict['name'] = 'Jerry' # {'name': 'Jerry', 'age': 20, 'gender': '男'}
dict['birthday'] = '12月5日' # {'name': 'Tom', 'age': 20, 'gender': '男', 'birthday': '12月5日'}
print(dict)
# 2、删除
dict1 = {'name':'Tom','age':20,'gender':'男'}
# del(dict1) # name 'dict1' is not defined
# del dict1 # name 'dict1' is not defined
# 删除指定的键值对
del dict1['name'] # {'age': 20, 'gender': '男'}
# del dict1['names'] # KeyError: 'names'没有数据
print(dict1)
# 3、clear()
dict1.clear()
print(dict1) # {}
- 改
字典序列[key] = 值
1、语法:字典序列[key] = 值
2、与"增"类似,若有该键值对,进行修改,若无,进行增加
dict3 = {'name':'Tom','age':20,'gender':'男'}
# dict3['name'] = 'Jerry' # {'name': 'Jerry', 'age': 20, 'gender': '男'}
dict3['birthday'] = '10月4日' # {'name': 'Tom', 'age': 20, 'gender': '男', 'birthday': '10月4日'}
print(dict3)
- 查
字典序列[‘key’]、get()、keys()、values()、items()
1、按照key值查找,若key存在,则返回对应的值,否则报错
2、函数get()、keys()、values()、items()
-get(),如果查找的key不存在返回第二个参数(默认值),如果省略第二个参数,则返回None
语法:字典序列.get(key,默认值)
- keys(),查找字典中所有的key,返回可迭代对象(可以用for遍历的对象)
- values(),查找字典中的所有key的值value,返回可迭代对象
- items():查找字典中的所有键值对,返回可迭代对象,里面的数据都是元组
# 1、[key]
dict4 = {'name':'Tom','age':20,'gender':'男'}
print(dict4['name']) # Tom
# print(dict4['names']) # 报错,KeyError: 'names'
# 2、函数
# get()
dict5 = {'name':'Tom','age':20,'gender':'男'}
print(dict5.get('name')) # Tom
print(dict5.get('id',100)) # 100
print(dict5.get('id')) # None
# keys()
print(dict5.keys()) # 可迭代的对象dict_keys(['name', 'age', 'gender'])
# values()
print(dict5.values()) # dict_values(['Tom', 20, '男'])
# items()
print(dict5.items()) # dict_items([('name', 'Tom'), ('age', 20), ('gender', '男')])
三、字典的循环遍历
遍历字典的key
# 遍历字典的key
dict = {'name':'Tom','age':20,'gender':'男'}
for key in dict.keys():
print(key)
name
age
gender
# 遍历字典的value
for value in dict.values():
print(value)
Tom
20
男
# 3、遍历字典的元素
for item in dict.items():
print(item)
(‘name’, ‘Tom’)
(‘age’, 20)
(‘gender’, ‘男’)
# 4、遍历字典的键值对
for key,value in dict.items():
print(f'{key}={value}')
name=Tom
age=20
gender=男
四、总结
1. 定义字典
dict1 = {‘name’:‘Tom’,‘age’:20,‘gender’:‘男’}
dict2 = {}
dict3 = dict()
2. 常见操作
- 增 或 修改
若有该键值对,进行修改,若无,进行增加一个键值对
语法: 字典序列[key] = 值
- 查找
1)按照key值查找,若key存在,则返回对应的值,否则报错
2)函数:get()、keys()、values()、items()
- 删除
1)删除字典或删除字典指定键值对
语法:del 字典序列 del(字典序列) del 字典序列[key]
2)清空字典clear()
语法:字典序列.clear()
第九天集合 |
一、集合
不允许重复数据出现的时候,用集合!!
创建集合
1、创建集合使用{}和set(),创建空集合使用set(),因为()是tuple,[]是list,{}是dict
2、集合的打印是乱序的,不支持下标
3、有去重的效果
# 输出是乱序的,集合是没有顺序的,不支持下标
s1 = {10,20,30,40,50}
print(s1) # {40, 10, 50, 20, 30}
# 集合的特点,去重
s1 = {10,10,10,40,50}
print(s1) # {40, 10, 50}
# 使用set()
s2 = {10,20,10,40,50}
print(set(s2)) # {40, 10, 20, 50}
# s3 = set()<class 'set'>
s3 = {} # <class 'dict'>
s3 = () # <class 'tuple'>
print(type(s3))
二、集合的常见操作
- 增加数据
add()和update()
1、add(),只能增加单一数据,追加已有数据,集合不变;追加没有数据,集合改变
2、update(),只能增加序列(这里指的是列表),否则报错
# 1、add()增加单一数据
s1 = {10,20}
s1.add(100)
print(s1) # {100, 10, 20}
s1.add(20) # 增加一样的,不变
print(s1) # {100, 10, 20}
# s1.add([11,22]) # 若追加多个数据,报错
print(s1) # unhashable type: 'list'不相容的类型
# 2、update()增加的是序列
s1 = {10,20}
# s1.update([11,22])
print(s1) # {10, 11, 20, 22}
# s1.update(1) # 报错,int函数不可迭代的,'int' object is not iterable
- 删除数据
remove()、discord()、pop()
1、remove()删除集合中的指定数据,若数据不存在,报错
2、discard()删除集合中的指定数据,若数据不存在,不会报错
3、pop()随机删除集合中的某个数据,并返回这个数据
s1 = {10,20,30,40,50}
s2 = {'lisa','lili','wangm'}
# 1、remove()
# print(s1.remove(10)) # None
# s1.remove(10)
# s2.remove('lilis') # KeyError: 'lilis'
# print(s2) # {'lisa', 'wangm'}
# 2、discard()
# s2.discard('lilis') # discard()没错误提示
print(s2)
# 3、pop()
num = s1.pop()
print(num) # 40
print(s1) # {10, 50, 20, 30}
# print(s1.pop()) # 返回值任一
- 查找数据
in 和 not in
in :判断数据在集合序列
not in:判断数据不在集合序列
s1 = {10,20,30,40,50}
print(10 in s1) # True
print(1 not in s1) # True
三、总结
1、不允许重复数据出现的时候,用集合!!
2、集合的常见操作
- 增加数据
1、add(),只能增加单一数据,追加已有数据,集合不变;追加没有数据,集合改变
2、update(),只能增加序列(这里指的是列表),否则报错
- 删除数据
1、remove()删除集合中的指定数据,若数据不存在,报错
2、discard()删除集合中的指定数据,若数据不存在,不会报错
3、pop()随机删除集合中的某个数据,并返回这个数据
- 查找数据
in :判断数据在集合序列
not in:判断数据不在集合序列