今日内容总结
一、字典型内置方法
二、元组型内置方法
三、 集合型内置方法
四、垃圾回收机制
一、字典型内置方法
1 、类型转换
dict()——使用方式
''' 字典型可以转换的类型很少'''
print(dict(11)) # 整型 报错
print(dict(11.11)) # 浮点型 报错
print(dict('owen')) # 字符串 报错
print(dict([11, 22, 33, 44])) # 列表 报错
print(dict((11, 22, 33, 44))) # 元组 报错
print(dict({11, 22, 33, 44})) # 集合 报错
print(dict(True)) # 布尔值 报错
2 、字典型内置功能
# 创建一个字符串
l1 = {
'name': 'owen',
'age': 20,
'hobbies': ['running', 'painting'] }
1、按key取值
print(l1['name']) # 结果为owen
print(l1['123']) # 直接报错(所以此方法不推荐使用)
print(l1.get('name')) # 结果为Owen
print(l1.get('123')) # 结果为none 不会发生报错
print(l1.get('123', '键不存在')) # 结果为键不存在,第一个如果不在则会none,写了则返回第二个参数
print(l1.get('age', '键不存在')) # 结果为20
第一个在的话,第二个参数就使用不到
2、修改值——字典型也是可变类型
l1 = { 'name': 'owen', 'age': 20, 'hobbies': ['running', 'painting'] }
print(id(l1))
l1['age'] = 18
print(id(l1))
# 内存地址没有发生改变
3、添加键值对
l1 = { 'name': 'owen', 'age': 20, 'hobbies': ['running', 'painting'] }
l1['height'] = 180
print(l1)
# 当键不存在时就会新增一个键值对
4、统计字典中键值对的个数(len)
l1 = { 'name': 'owen', 'age': 20, 'hobbies': ['running', 'painting'] }
print(len(l1)) # 结果为 3
5、成员运算也只能判断key键
l1 = { 'name': 'owen', 'age': 20, 'hobbies': ['running', 'painting'] }
print('owen' in l1) # 结果为false
print('name' in l1) # 结果为true
6、删除键值对
l1 = { 'name': 'owen', 'age': 20, 'hobbies': ['running', 'painting'] }
del l1['name'] # 通用删除方式
print(l1)
print(l1.pop('age'))
l1.popitem()
print(l1)
7、获取所有的键(keys),所有的值(values),所有的键值对(items)
用法:
l1 = { 'name': 'owen', 'age': 20, 'hobbies': ['running', 'painting'] }
print(l1.keys()) # 取所有的键
print(l1.values()) # 取所有的值
print(l1.items()) # 取所有的键值对
'''结果可以看成列表'''
字典型中需要了解知识
1、update更新字典
用法:
dic = {'l1': 'owen', 'l2': 'Tony', 'l3': 'kery'}
dic.update({'l1': 'wuhua', 'l4': 'xxx'})
print(dic)
# 当键存在时修改值 键不存在则新增
2、fromkeys()快速生成字典
用法
dic = dict.fromkeys(['k1', 'k2', 'k3'], [111])
print(dic)

3、setdefault()
dic = {'k1': 111, 'k2': 222}
dic.setdefault('k3', 333)
print(dic) # {'k1': 111, 'k2': 222, 'k3': 333}
# 键不存在时增加一个键值对
dic.setdefault('k1', '***')
print(dic) # {'k1': 111, 'k2': 222, 'k3': 333}
# 键存在时,值不发生改变
二、元组型内置方法(不可变的列表)
1、类型转换
支持for循环的数据类型都可以转成元组
print(tuple(11)) # 整型 —— 报错
print(tuple(11.11)) # 浮点型 —— 报错
print(tuple('owen')) # 字符串
print(tuple([11, 22, 33, 44])) # 列表
print(tuple({'name': 'owen'})) # 字典
print(tuple({11, 22, 33, 44})) # 集合
print(tuple(True)) # 布尔值 —— 报错
2 、元组的特性
当元组内只有一个元素的时候,根据type查看都不是元组型
而在但个元素后加上逗号,他们才能显示为元组型
'''所以在存储数据时,如果内部只有一个元素,加个逗号'''
3 、元组内置操作
1、索引取值
l1 = (1,2,3,4,56)
print(l1[2]) # 结果为3
2、切片操作
l1 = (1,2,3,4,56)
print(l1[0:2]) # 结果为(1, 2)
3、间隔
l1 = (1,2,3,4,56)
print(l1[0:4:2]) # 结果为(1, 3)
4、统计元组内元素的个数(len)
l1 = (1,2,3,4,56)
print(len(l1)) # 结果为5
5、成员运算(in)
l1 = (1,2,3,4,56)
print(56 in l1) # 结果为true
6、统计某个元素出现的次数(count)
l1 = (1,2,3,4,56)
print(l1.count(2)) # 结果为true
7、元组内的元素不能'修改':元组内各个索引值指向的内存地址不能修改
l1 = (1,2,3,4,56)
l1[1] = 123 # 报错
''' 笔试题 '''
tt = (11, 22, 33, [11, 22])
tt[-1].append('heiheihei')
问:执行之后的结果 正确答案选B
A.报错 B.正常添加 C.不知道
"""
tt = (11, 22, 33, [11, 22])
print(id(tt[-1]))
tt[-1].append('heiheihei')
print(id(tt[-1]))
print(tt)
三、集合内置方法
1 、类型转换
print(set(11)) # 报错
print(set(11.11)) # 报错
print(set('owen')) # {'e', 'n', 'o', 'w'}
print(set([11,22,33,44])) # {33, 11, 44, 22}
print(set({'name':'owen'})) # {'name'}
print(set((11,22,33))) # {33, 11, 22}
print(set(True)) # 报错
'''整数、浮点型、布尔值无法转换,集合内元素只能是不可变的类型'''
2 、集合两大功能
1、去重
集合本身自带的特性就是不能出现重复的元素,有的话集合会自动去除
2、关系运算
判断两个群体的差异,是否有相同的、不同的
l1 = {'owen', 'kery', 'mark', 'jerry'} # 小李的好友列表
l2 = {'mark', 'tom', 'jerry', 'jack'} # 小王的好友列表
# 1.求两个人的共同好友(&)
print(l1 & l2)
# 2.求小李的单独好友(-)
print(l1 - l2)
# 3.求两个人所有的好友(|)
print(l1 | l2)
# 4.求两个人各自的好友(^)
print(l1 ^ l2)
四、垃圾回收机制
'''python底层针对空间的申请和释放都已经设计好了,不需要在执行什么操作'''
1 、引用计数
python中会将引用计数为0的数据清除
name = 'owen' # owen引用了一次,计数1
l1 = name # owen引用了两次,计数2
''' 使用一次,计数加1 '''
2 、标记清除
当内存空间即将满了的时候 python会自动启动应急机制
停止程序的运行 ,检查值的引用计数并给计数为0的数据打上标记
然后一次性清理掉
3 、分代回收
根据值存在的时间长短 将值划分为三个等级(1,2,3)
等级1 检测机制每隔5s来一次
等级2 检测机制每隔20s来一次
等级3 检测机制每隔100s来一次
今日总结~