day03.10
python数据类型之字典dict的内置方法
类型转换:
info = dict([['name', 'tony'], ('age', 18)]) # 列表形式转换为字典形式 print(info) # {'name': 'tony', 'age': 18} info = {}.fromkeys(('name', 'age', 'sex'), 123) # fromkeys会从元组中取出每个值当做key,然后与数值123组成key:value放到字典中 print(info) # {'name': 123, 'age': 123, 'sex': 123}
-
按key取值
d1 = { 'name': 'jason', 'age': 18, 'hobbies': ['play game', 'basketball'] } print(d1['name']) # jason 键存在 print(d1['fgd']) # key不存在直接报错 print(d1.get('name')) # jason 键存在 print(d1.get('xxx')) # None 键不存在不会报错 而是返回None
print(d1.get('xxx', '这个键不存在')) # 第二个参数不写默认返回None 写了则输出写了的内容
print(d1.get('name', '这个键不存在')) # 如果键存在 则不需要使用到第二个参数
-
修改字典当中的数值
字典也是可变的数据类型,修改字典当中的数值
d1 = { 'name': 'jason', 'age': 18, 'hobbies': ['play game', 'basketball'] } print(id(d1)) # 2251867669416 id,即内存地址 d1['name'] = 'jasonDSB' # 键存在是修改值,修改key所对应的v值 print(d1, id(d1)) # {'name': 'jasonDSB', 'age': 18, 'hobbies': ['play game', 'basketball']} 2251867669416
-
添加键值对
d1 = { 'name': 'jason', 'age': 18, 'hobbies': ['play game', 'basketball'] } d1['pwd'] = 123 # 键不存在则是新增一个键值对 print(d1) # {'name': 'jason', 'age': 18, 'hobbies': ['play game', 'basketball'], 'pwd': 123}
-
统计字典当中的键值对的个数
d1 = { 'name': 'jason', 'age': 18, 'hobbies': ['play game', 'basketball'] } print(len(d1)) # 3
-
字典当中的成员运算
字典当中的成员运算,只能用来判断key知否存在,其输出结果是以布尔值的方式出现
d1 = { 'name': 'jason', 'age': 18, 'hobbies': ['play game', 'basketball'] } print('jason' in d1) # False print('name' in d1) # True
-
删除字典当中的键值对
d1 = { 'name': 'jason', 'age': 18, 'hobbies': ['play game', 'basketball'] } del d1['name'] # 通用的删除方式 print(d1) # {'age': 18, 'hobbies': ['play game', 'basketball']}
-
获取字典当中所有的key、value、key:value
d1 = { 'name': 'jason', 'age': 18, 'hobbies': ['play game', 'basketball'] } print(d1.keys()) # dict_keys(['name', 'age', 'hobbies']) 可以看成是列表 print(d1.values()) # dict_values(['jason', 18, ['play game', 'basketball']]) 可以看成是列表 print(d1.items()) # dict_items([('name', 'jason'), ('age', 18), ('hobbies', ['play game', 'basketball'])]) 可以看成是列表套元组,一个元组对应一个键值对
python数据类型之元组tuple的内置方法
类型转换:
元组可以转换所有支持for循环的数据类型(列表、字典、集合、字符串)【整形和浮点型以及布尔值不可以转换】
t1 = (11, 22, 33, 44, 55, 66, [22, 33, 44]) print(t1[6]) # [22, 33, 44] t1 = (11, 22, 33, 44, 55, 66, [22, 33, 33]) print(t1[6]) # [22, 33, 33]
-
元组的索引取值
t1 = (11, 22, 33, 44, 55, 66) print(t1[0]) # 11 从左到右 print(t1[-1]) # 66 -1代表从右往左
-
切片操作
t1 = (11, 22, 33, 44, 55, 66) print(t1[1:4]) # (22, 33, 44) 索引从1到4,前闭后开 print(t1[-1:-4:-1]) # (66, 55, 44) 间隔为1,从右到左 print(t1[-4:-1]) # (33, 44, 55) 索引从-4到-1,间隔为1
-
间隔
t1 = (11, 22, 33, 44, 55, 66) print(t1[1:4:2]) # (22, 44) 索引从1到4,间隔为2
-
统计元组内的元素个数
t1 = (11, 22, 33, 44, 55, 66) print(len(t1)) # 6 判断元素个数
-
成员运算
成员运算结果是布尔值
t1 = (11, 22, 33, 44, 55, 66) print(11 in t1) # True
-
统计某个元素出现的次数
t1 = (11, 22, 33, 44, 55, 66) print(t1.count(22)) # 1 22只出现了一次
-
元组内元素不能"修改": 元组内各个索引值指向的内存地址不能修改
python数据类型之集合set的内置方法
类型转换:
s1 = {1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 2, 3, 2, 2, 1, 2, 3, 2, 3, 4, 3, 2, 3} print(s1) # {1, 2, 3, 4} l = ['a', 'b', 1, 'a', 'a'] s1 = set(l) l = list(s1) print(l) # ['b', 'a', 1] 集合内部是无序的
print(set(11)) # 报错 print(set(11.11)) # 报错 print(set('jason')) # {'n', 'j', 'o', 'a', 's'} print(set([11, 22, 33, 44])) # {33, 11, 44, 22} print(set({'name': 'jason'})) # {'name'} print(set((11, 22, 33))) # {33, 11, 22} print(set(True)) # 报错
-
去重功能
集合内不能出现重复的元素(自带去重特性),如果有重复元素存在的话,转为集合类型的时候会自动取出重复的元素
s1 = [11, 23, 33, 44, 44, 55, 23, 67] print(set(s1)) # {33, 67, 11, 44, 23, 55}
-
关系运算
判断两个群体的差异,有什么相同点,有什么不同点
f1 = {'jason', 'kevin', 'tony', 'jerry'} # 小李的好友列表 f2 = {'jason', 'tom', 'jerry', 'jack'} # 小王的好友列表 print(f1 & f2) # {'jerry', 'jason'} # 两人的共同好友 print(f1 - f2) # {'kevin', 'tony'} # f1单独有的数据 print(f1 | f2) # {'kevin', 'jack', 'tom', 'jason', 'jerry', 'tony'} # f1和f2的合集 print(f1 ^ f2) # {'jack', 'tony', 'tom', 'kevin'} f1和f2单独有的数据的合集
垃圾回收机制
引用计数:
内存中数据身上绑定的变量名的个数,python会将引用计数为0的数据清除,引用计数反应了程序运行过程中变量数据的引用次数
标记清除:
当内存空间即将溢出(满了)的时候,python会自动启动应急机制停止程序的运行 ,挨个检查值的引用计数,并给计数为0的数据打上标记然后一次性清理掉
分代回收:
根据值存在的时间长短,可以将值划分为不同的等级,等级越高,也就代表着引用技术越高,检索清理的间隔越长
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?