基本数据类型内置方法补充2和垃圾回收机制

字典内置方法

类型转化

# print(dict(11))  # 报错
# print(dict(11.11))  # 报错
# print(dict(True))  # 报错
# print(dict('success'))  # 报错
# print(dict({'height': '175cm', 'weight': '55kg'}))  # 报错
# print(dict((90, 80, 60, 50, 40)))  # 报错
# print(dict({88, 80, 60, 50, 40}))  # 报错
print(dict([('hight', '175cm'), ['weight', 55]]))  # {'hight': '175cm', 'weight': 55}
图片名称

常见操作

dict1 = {'name': 'tom', 'height': '175cm', 'weight': 55}
# 1.按key取值
print(dict1['name'])  # tom,键存在
print(dict1['weight'])  # 注意键不存在直接报错
# 涉及到字典取值,下面的方式使用频率更高
print(dict1.get('name'))  # tom,键存在
print(dict1.get('age'))  # 键不存在,返回的结果None
print(dict1.get('height', '取到值就不显示'))  # 175cm
print(dict1.get('age', '字典内没有这个键'))  # 字典内没有这个键
# 2.修改值,字典也是可变类型
print(id(dict1))  # 2297114637008
dict1['weight'] = 66  # 键存在就修改值
print(dict1, id(dict1))  # {'name': 'tom', 'height': '175cm', 'weight': 66} 2297114637008
# 3.添加键值对
dict1['age'] = 22  # 键不存在则是新增一个键值对
print(dict1)  # {'name': 'tom', 'height': '175cm', 'weight': 66, 'age': 22}
# 4.统计字典中键值对的个数
print(len(dict1))  # 4
# 5.成员运算,只能判断key
print('hobby' in dict1)  # False
print('name' in dict1)  # True
# 6.删除键值对
del dict1['name']  # 通用的删除方式
print(dict1)  # {'height': '175cm', 'weight': 66, 'age': 22}
print(dict1.pop('age'))  # 22,尾部弹出
print(dict1)  # {'height': '175cm', 'weight': 66}
dict1.popitem()  # 随机弹出一个,几乎用不到
print(dict1)  # {'height': '175cm'}
# 7.获取所有的K,所有的V,所有的K:V键值对
dict2 = {'name': 'tom', 'height': '175cm', 'weight': 55}
print(dict2.keys())  # dict_keys(['name', 'height', 'weight']),可以看成是列表
print(dict2.values())  # dict_values(['tom', '175cm', 55]),可以看成是列表
print(dict2.items())  # dict_items([('name', 'tom'), ('height', '175cm'), ('weight', 55)]),可以看作是列表套元组

需要了解的操作

# 1.update更新字典
dict3 = {'name': 'tom', 'height': '175cm', 'weight': 55}
dict3.update({'height': '180cm', 'hobby': 'sleep', 'country': 'USA'})
print(dict3)  # {'name': 'tom', 'height': '180cm', 'weight': 55, 'hobby': 'sleep', 'country': 'USA'},K存在则修改V,K不存在则新增K:V键值对
# 2.fromkeys()快速生成字典
dic = dict.fromkeys(['k1', 'k2', 'k3'], ['v'])
print(dic)  # print(dic)  

元组内置方法

类型转换

# 所有支持for循环的数据类型都可以转成元组
# print(tuple(11))  # 报错
# print(tuple(11.11))  # 报错
print(tuple('trump'))  # ('t', 'r', 'u', 'm', 'p')
print(tuple([88, 80, 60, 50, 40]))  # (88, 80, 60, 50, 40)
print(tuple({'name': 'trump'}))  # ('name',)
print(tuple({88, 80, 60, 50, 40}))  # (40, 80, 50, 88, 60)
# print(tuple(True))  # 报错

元组的特性

t1 = (88, 80, 60, 50, 40)
print(type(t1))  # <class 'tuple'>
t2 = (119)
print(type(t2))  # <class 'int'>
t3 = (110.120)
print(type(t3))  # <class 'float'>
t4 = ('obama')
print(type(t4))  # <class 'str'>
# 当元组内只有一个元素的时候,要在元素的后面加上逗号
t5 = (119,)
print(type(t2))  # <class 'tuple'>
t6 = (110.120,)
print(type(t3))  # <class 'tuple'>
t7 = ('obama',)
print(type(t4))  # <class 'tuple'>

常用操作

t8 = (100, 90, 80, 60, 50, 40, 30, 20)
# 1.索引取值
print(t8[0])  # 100
print(t8[-1])  # 20
# 2.切片操作
print(t8[1:4])  # (90, 80, 60)
print(t8[-1:-4:-1])  # (20, 30, 40)
print(t8[-4:-1])  # (50, 40, 30)
# 3.间隔
print(t8[2:7:2])  # (80, 50, 30)
# 4.统计元组内元素的个数
print(len(t8))  # 8
# 5.成员运算
print(50 in t8)  # True
# 6.统计某个元素出现的次数
print(t8.count(60))  # 1
# 7.元组内元素正常情况下无法修改(特殊情况,元组里面有可变类型),元组内各个索引值指向的内存地址不能修改
# t8[0] = 120

集合内置方法

类型转化

# print(set(11))  # 报错
# print(set(11.11))  # 报错
# print(set(True))  # 报错
print(set('success'))  # {'c', 'u', 'e', 's'}
print(set((90, 80, 60, 50, 40)))  # {40, 80, 50, 90, 60}
print(set({88, 80, 60, 50, 40}))  # {80, 50, 40, 88, 60}
print(set({'name': 'jason'}))  # {'name'}
# print(set(100, [11, 22]))  # 报错
# print(set(100, (11, 22)))  # 报错

两大功能

去重

集合内不能出现重复的元素,自带去重特性,自动去掉重复的元素

set1 = {1, 1, 1, 2, 6, 9, 7, 5, 2, 2, 5, 4, 6, 7, 5, 2, 2, 5, 4, 8, 6, 5, 5, 2, 4, 5, 2, 4, 2, 5, 5, 2, 5, 2}
print(set1)  # {1, 2, 4, 5, 6, 7, 8, 9}
l = ['a', 'b', 'c', 'a', 'a', 'f', 'f', '11', '22']
set1 = set(l)
l = list(set1)
print(l)  # ['f', 'b', '22', 'c', 'a', '11']

关系运算

判断两个群体内的差异,例如共同关注,独有好友,共同点赞

f1 = {'trump', 'bush', 'rose', 'michael', 'obama'}  # 小李的qq好友列表
f2 = {'obama', 'tom', 'trump', 'jack', 'putin'}  # 小王的qq好友列表
# 1.求两个人的共同好友
print(f1 & f2)  # {'obama', 'trump'}
# 2.求小王的单独好友
print(f2 - f1)  # {'putin', 'jack', 'tom'}
# 3.求两个人所有的好友
print(f1 | f2)  # {'bush', 'jack', 'trump', 'tom', 'rose', 'putin', 'michael', 'obama'}
# 4.求两个人各自的好友
print(f1 ^ f2)  # {'tom', 'bush', 'jack', 'rose', 'putin', 'michael'}
图片名称

垃圾回收机制

1.引用计数

python会将引用计数为0的数据清除
name = 'trump'  # trump引用计数为1
a = name  # trump引用计数为2
b = 1  # 1引用计数由1变为0,下一步2赋值给b时
b = 2  # 2引用计数为1

2.标记清除

当内存空间即将溢出的时候,python的应急机制会自动启动,停止程序的运行,然后挨个检查值的引用计数并给计数为0的数据打上标记,然后一次性清理掉。

3.分代回收

根据值存在的时间长短,将值划分为三个等级
等级1 检测机制每隔5s检测一次
等级2 检测机制每隔1min检测一次
等级3 检测机制每隔5min检测一次

图片名称
posted @ 2022-03-10 21:22  一梦便是数千载  阅读(39)  评论(0编辑  收藏  举报