python入门小数据池深浅拷贝集合

Posted zhangdadayou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python入门小数据池深浅拷贝集合相关的知识,希望对你有一定的参考价值。

3.8 小数据池

  1. 小数据池:缓存机制(驻留机制)

    • ==(用于判断两边的内容是否相等)

    • a=10 
      b=10
      print(a==b)# ==用于判断两边的内容是否相等
    • is(用于判断两边内存地址是否相等)

    • a=10
      b=10
      print(a is b)
      #输出 True
    • #小数据池总结
      
      #1、数字范围:-5~256
      #2、字符串:
      """
      1、同一代码下,内容相同则内存地址相同
      2、乘法相乘总长度不能超过20
      3、惩罚的时候中文、特殊符号乘以0
      """
      #3、布尔型:同一代码下,内容相同则内存地址相同
      
      #代码块:一个文件、一个函数、一个类、一个模块、终端每一行代码都叫做代码块
      #1、数字
      """
      1、同一代码下,内容相同则内存地址相同
      2、数字相乘不能用浮点型
      3、数字的范围:-5~256
      """
      #2、字符串
      """
      1、同一代码下,内容相同则内存地址相同
      2、字符串相乘总长不能超过20
      3、乘法的时候中文、特殊字符相乘以1或0
      """
      #3、布尔型:同一代码下,相同内容则内存地址相同

3.9 深浅拷贝

  1. 赋值

    • a=20#开辟一个内存空间存放20,a指向这个内存地址
      b=a#把a的值赋值给b,这时b指向存放20的内存地址
      print(id(a))
      print(id(b))
      #结果为 1403154048 1403154048
    • 技术图片
  2. 浅拷贝

    • 拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。也就是,把对象复制一遍,但是该对象中引用其他对象我不复制

    • import copy #导入copy模块
      a=[1,2,3,[4,5,6]]
      b=a.copy
      b[0]=5
      print(a)
      print(b)
      #结果为:[1,2,3,[4,5,6]]
      #[5,2,3,[4,5,6]]
      b[-1][0]=9
      print(a)
      print(b)
      #结果为:[1,2,3,[9,5,6]]
      #[1,2,3,[9,5,6]]
    • 技术图片

  3. 深拷贝

    • 外围和内部元素都进行拷贝对象本身,而不是引用。也就是把对象复制一遍,并且该对象中引用对象也复制

    • import copy
      a=[1,2,3,[4,5,6]]
      b=copy.deepcopy(a)
      a[0]=7
      print(a)
      print(b)
      #结果为:[7,2,3,[4,5,6]]
      #[7,2,3,[4,5,6]]
      a[-1][0]=9
      print(a)
      print(b)
      #结果为:[1,2,3,[9,5,6]]
      #[1,2,3,[9,5,6]]
    • 技术图片

  4. 总结:浅拷贝只是拷贝第一层元素,第一层元素引用的元素不复制只是引用;浅拷贝的时候,只会开辟一个新的容器列表,其他元素使用的都是源列表中的元素;
    深拷贝:拷贝第一层元素和第一层元素引用对象,不可变数据进行公用,可变的数据类型再次开辟空间

3.10 集合(set)

  1. 什么是集合?

    • 可以理解成没有值的字典,无序,不支持索引

    • 天然去重

    • 定义集合

    • s = 1,"alex",False,(1,2,3),12,1,12,4,6,32,2,4
      print(s)
      #结果为False, 1, 32, 2, 4, 6, 12, (1, 2, 3), 'alex'
  2. 集合的增、删、改、查

    • s=1,2,3,4
      s.add("67")#只能添加一个
      print(s)
      #结果为1,2,3,4,"67"
      
    • s=1,2,3,4
      s.update("今天")#迭代添加
      print(s)
      #结果为:1,2,3,4,"今","天"
    • s=1,2,3,4
      print(s.pop())# pop有返回值 4
      print(s)#1,2,3
    • s=1,2,3,4
      s.remove(1)#指定元素删除
      print(s)#2,3,4
    • s=1,2,3,4
      s.clear()#清空 
    • 改:先删后改

    • s=1,2,3,4
      for x in s
         print(x)
  3. 其他操作:

    # s1 = 1,2,3,4,5,6,7
    # s2 = 5,6,7,1
    # print(s1 & s2)  # 交集
    # print(s1 | s2)  # 并集
    # print(s1 - s2)  # 差集
    # print(s1 ^ s2)  # 反交集
    # print(s1 > s2)  # 父集(超集)
    # print(s1 < s2)  # 子集
    
    # print(frozenset(s1))  # 冻结集合 更不常用
    # dic = frozenset(s1):1
    # print(dic)

以上是关于python入门小数据池深浅拷贝集合的主要内容,如果未能解决你的问题,请参考以下文章

python 深浅拷贝,集合 ,小数据池 操作

Python基础篇-深浅拷贝小数据池集合

小数据池 集合 深浅拷贝

python基础4(小数据池,编码,深浅拷贝)

Python基础之小数据池及深浅拷贝

python--is/id==,集合,深浅拷贝