数据类型之剩余内置方法

今日内容概要

字典内置方法

元组内置方法

集合内置方法

 

今日内容详细

字典的内置方法

1.类型转换
  dict()
d1 = {'name''jason','age':18,'hobbies':['play game','basketball']}
# 1.按key取值
# print(d1['name']) # jason 键存在
# print(d1['xxx'])   # 键不存在直接报错
"""涉及到字典取值 更加推荐下面的方式"""
# print(d1.get('name')) # jason 键存在
# print(d1.get('xxx')) # None 键不存在不会报错 而是返回None
# print(d1.get('xxx','这个键不存在')) # 第二个参数不写默认返回None 写了则返回写了的
# print(d1.get('name','这个键不存在')) # 如果键存在 则需要使用到第二个参数
# 2.修改值 字典也是可变类型
d1 = {'name':'jason','age':18,'hobbies':['basketball','play game']}
d1['name'] = 'jasonDSB' # 键存在修改值
print(d1,id(d1))
print(id(d1))
# 3.添加键值对
d1['pwd'] = 123   键不存在时则增加一个键值对
print(d1)
# 4.统计字典中键值对的个数
print(len(d1))  # 按照K值得个数来统计
# 5.成员运算   # 也是只是通过k值判断
print('jason' in d1)  # False
print('name' in d1)   # True
# 6.删除键值对
# 键值对删除 del d1['name']
del d1['name']
print(d1)
# 第二种方式:利用pop删除
print(d1.pop('age')) 延迟删除
# print(d1.pop('age')) 延迟删除
print(d1.popitem())
print(d1)
7.# 获取所有的键、所有的值 、所有的键值对
print(d1.keys()) # 所有的键 dict_keys(['name', 'age', 'hobbies'])
print(d1.values())  # 所有的值 dict_values(['jason', 18, ['basketball', 'play game']])
print(d1.items())  # 所有的键值对 dict_items([('name', 'jason'), ('age', 18), ('hobbies', ['basketball', 'play game'])])
可以看成是列表套元组
# 1.update更新字典
# dic = {'k1': 'jason', 'k2': 'Tony', 'k3': 'JY'}
# dic.update({'k1': 'JN', 'k4': 'xxx'})
# print(dic) # 键存在则修改 键不存在则新增
# 2.fromkeys()快速生成字典
# dic = dict.fromkeys(['k1', 'k2', 'k3'], [])
# print(dic) # {'k1': [], 'k2': [], 'k3': []}
"""笔试题"""
# dic['k1'].append(111) # 三个键指向的是同一个列表
# print(dic) # {'k1': [111], 'k2': [111], 'k3': [111]}
# 3.setdefault()
dic = {'k1': 111, 'k2': 222}
# print(dic.setdefault('k3', 333)) # 键不存在则新增键值对 并且有返回结果是新增的v
# print(dic)
print(dic.setdefault('k1', '嘿嘿嘿'))  # 键存在 则返回对应的值 不做修改
print(dic)

元组内置方法

# 可以看成是不可变的列表
1.类型转换
支持for循环的数据类型都可以转成元组
   # print(tuple(11)) # 报错
   # print(tuple(11.11)) # 报错
   print(tuple('jason'))
   print(tuple([11,22,33,44]))
   print(tuple({'name':'jason'}))
   print(tuple({11,22,33,44}))
   # print(tuple(True)) # 报错
2.元组的特性
# t1 = (11, 22, 33, 44)
   # print(type(t1)) # <class 'tuple'>
   # t2 = (11)
   # print(type(t2)) # int
   # t2 = (11.11)
   # print(type(t2)) # float
   # t2 = ('jason')
   # print(type(t2)) # str
   """当元组内只有一个元素的时候 一定要在元素的后面加上逗号"""
   # t2 = (11,)
   # print(type(t2)) # tuple
   # t2 = (11.11,)
   # print(type(t2)) # tuple
   # t2 = ('jason',)
   # print(type(t2)) # tuple
   """
  一般情况下 我们会习惯性的将所有可以存储多个数据的类型的数据
  如果内部只有一个元素 也会加逗号
      (1,)
      [1,]
      {1,}
      {'name':'jason',}
  """
   t1 = (11, 22, 33, 44, 55, 66)
   # 1.索引取值
   # print(t1[0])
   # print(t1[-1])
   # 2.切片操作
   # print(t1[1:4])
   # print(t1[-1:-4:-1])
   # print(t1[-4:-1])
   # 3.间隔
   # print(t1[1:4:2]) # (22, 44)
   # 4.统计元组内元素的个数
   # print(len(t1)) # 6
   # 5.成员运算
   # print(11 in t1) # True
   # 6.统计某个元素出现的次数
   # print(t1.count(22))
   # 7.元组内元素不能"修改": 元组内各个索引值指向的内存地址不能修改
   # t1[0] = 111
   """
  笔试题
      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('jason'))
   # print(set([11,22,33,44]))
   # print(set({'name':'jason'}))
   # print(set((11,22,33)))
   # print(set(True)) # 报错
   """集合内元素只能是不可变类型"""

"""集合只会在去重和关系运算中使用 甚至有时候也不会用"""
2.两大功能
1.去重
  集合内不能出现重复的元素(自带去重特性)
       如果出现了 会被集合自动去重
   2.关系运算
  判断两个群体内的差异
      eg:共同好友 共同关注 共同点赞
 
# print(set(11)) # 报错
# print(set(11.11)) # 报错
# print(set('jason'))
# print(set([11,22,33,44]))
# print(set({'name':'jason'}))
# print(set((11,22,33)))
# print(set(True)) # 报错
"""集合内元素只能是不可变类型"""
# 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)


# 关系运算
f1 = {'jason', 'kevin', 'tony', 'jerry'}  # 小李的好友列表
f2 = {'jason', 'tom', 'jerry', 'jack'}  # 小王的好友列表
# 1.求两个人的共同好友
# print(f1 & f2) # {'jerry', 'jason'}
# 2.求小李的单独好友
# print(f1 - f2) # {'kevin', 'tony'}
# 3.求两个人所有的好友
# print(f1 | f2) # {'kevin', 'jack', 'tom', 'jason', 'jerry', 'tony'}
# 4.求两个人各自的好友
print(f1 ^ f2)  # {'jack', 'tony', 'tom', 'kevin'}

 

垃圾回收机制

"""python底层针对空间的申请和释放都是设计好的 不需要程序员操心"""
1.引用计数
python会将引用计数为0的数据清除
  name = 'jason'  # jason引用计数为1
       a = name        # jason引用计数为2
       '''内存中数据身上绑定的变量名的个数'''
       # ps:还可以了解一下循环引用的情况
2.标记清除
当内存空间即将溢出(满了)的时候 python会自动启动应急机制
   停止程序的运行 挨个检查值的引用计数并给计数为0的数据打上标记
   然后一次性清理掉
3.分代回收
根据值存在的时间长短 将值划分为三个等级(1,2,3)
  等级1 检测机制每隔5s来一次
       等级2 检测机制每隔1min来一次
       等级3 检测机制每隔5min来一次

 

 

 

posted @   一颗平凡的小石头  阅读(234)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示