仗键走天涯004

1 今日内容大纲

​ 1.is == id的用法

​ 2.代码块

​ 3.代码块下的缓存机制

​ 4.总结

​ 5.集合

​ 6.深浅copy

2昨日回顾

  1. 字典初识
    • 查询速度快,{'name':'太白'},存储大量的关联型数据
    • 键:必须是不可变的数据类型(int,str,bool,tuple)唯一的
    • 值:任意数据类型,对象
    • 字典3.5x之前是无序的,3.6x按照初识时的顺序排列,3.7之后有序
  2. 增删改查
    • 增:setdefualt(),dic['age'] = 18
    • 删:pop键(可以设置返回值),clear清空,del dic['name']
    • 改:dic['name'] = 'xiao'
    • 查:dic['name'], dic.get('name')
    • 三种特殊:dic.keys(), dic.values(), dic.items()
  3. 字典的嵌套

3具体内容

  1. id is ==

    #id 身份证号
    i = 100
    s = 'alex'
    print(di(1),id(s))
    
    #==比较两边的值是否相等
    l1 = [1,2,3]
    l2 = [1,2,3]
    print(l1 == l2)
    s1 = 'alex'
    s2 = 'alex'
    print(s1 == s2)
    
    #is 判断的是内存地址是否相同
    #可变类型,不可变类型
    #id相同,值一定相同
    #值相同,id不一定相同
    l1 = [1,2,3]
    l2 = [1,2,3]
    print(id(l1),id(l2))
    
  2. 代码块

    • 代码块:我门所以的代码都需要依赖代码块执行
    • 一个文件就是一个代码块
    • 交互式命令下一行就是一个代码块
  3. 两个机制:同一个代码块下,有一个机制;不同代码块,遵循另一个机制‘

    • 同一个代码块下的缓存机制
      • 前提条件:同一个代码块
      • 机制内容:pass
      • 适用的对象:所有的数字,bool,几乎所有的字符串
      • 优点:提升性能,节省内存
    • 不同代码块下的缓存机制:小数据池
      • 前提条件:不同代码块内
      • 机制内容:pass
      • 适用的对象:int bool str
      • 具体细则:-5~245数字,bool,满足规则的字符串
      • 优点:提升性能,节省内存
    l1 = 1000
    l2 = 1000
    print(id(l1),id(l2))
    print(li is l2)
    s1 = [1,2,3]
    s2 = [1,2,3]
    print(id(s1),id(s2))
    print(s1 is s2)
  4. 总结

      • 分同一个代码块下使用一个缓存机制,不同的的代码块使用另一个缓存机制(小数据池)
      • 小数据池的范围是:-5~256
      • 缓存机制的优点:提升性能,节省内存
  5. 集合

    • python基础数据类型之:集合set。容器型的数据类型,它要求它里面的元素是不可变的数据,但是它本身是可变的数据类型。集合时无序的。{}
    • 集合的作用
      • 列表的去重
      • 关系测试:交集,并集,差集,...
      • pass
#集合的创建
set1 = set({1,2,'name',False})
set1 = {1,2,'金星','alex'}
print(set1)

#空集合
print({},type({}))#空字典
set1 = set()
print(set1)

#集合的有效性测试
set1 = {[1,2,3],5,'alex'}
print(set1)
set1 = {{'name':'alex'},234}
print(set1)

#   集合的增删改查
set1 = {'太白','男神','alex','金星'}
#增
#add
set1.add('xx')
print(set1)
#update跌代着增加
set1.update('qwert')
print(set1)

#删
#remove 按照元素删除
set1.remove('太白')
print(set1)
#pop 随机删除
set1.pop()
print(set1)

#变形改值
set1.remove('xx')
set1.add('vv')
print(set1)

#关系测试:
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
#交集
print(set1 & set2)

#并集
print(set1 | set2)

#差集
print(set1 - set2)

#反交集
print(set1 ^ set2)

#子集
set1 = {1,2,3}
set2 = {1,2,3,4,5}
print(set1 < set2)

#超集
print(set2 > set1)

#列表的去重
lis = [1,2,3,4,4,4,5,5,1]
set1 = set(lis)
lis = list(set1)
print(lis)

# 用处:数据之间的关系;列表去重
  1. 深浅copy(考)
#赋值运算
l1 = [1,23,4,[543,222]]
l2 = l1
l1.append(8)
print(l1,l2)

#浅copy
l1 = [1,23,4,[543,222]]
l2 = l1.copy()
l1.append(66)
print(l1,id(l1),l2,id(l2))

l1[-1].append(66)
print(l1,id(l1),l2,id(l2))

l1[0] = 222
print(l1,id(l1),l2,id(l2))

#深copy
import copy
l1 = [1,2,3,[4,5,6]]
l2 = copy.deepcopy(l1)
print(l1,l2)
l1[-1].append(33)
print(l1,l2)
l1[0] =99
print(l1,l2)

#题
l1 = [1,2,3,[4,5]]
l2 = l1[:]
l1[-1].append(33)
print(l1,l2)

#浅copy:list dict:嵌套的可变的数据类型是同一个
#深copy:list dict:嵌套的可变的数据类型不是同一个

4今日总结

  • id is ==的用法
    • id 内存地址
    • is
    • == 判断数据值是否相等
  • 缓存机制
    • 同一个代码块下适用一个缓存机制;不同代码块下适用另一个缓存机制(小数据池)
  • 小数据池的范围:-5~256
  • 缓存机制的优点:提升性能,节省内存
  • 集合:
    • 作用
      • 列表去重
      • 关系测试
  • 深浅copy

猜你喜欢

转载自www.cnblogs.com/xiaohei-chen/p/11874963.html
004