小数据池 集合 深浅拷贝

小数据池 集合 深浅拷贝

一、小数据池

  • 定义:小数据池是Python中一种提高效率的方式,固定数据类型使用同一个内存地址,支持数据类型:str,int,bool是一种缓存机制,特被称为驻留机制,各大编程语言中都有类似的东西。
  • id() ----- 查看元素的内存地址
  • is 与 == 的区别
    • is 判断两个元素的内存地址是否相等
    • == 判断等号左右两边的元素的值是否相等
  • 小数据池的规则
    • 数字:-5~256
    • 字符串:
      • 字符串在做乘法(乘数不为1)的时候总长度不能超过20
      • 自己定义的字符串的长度不受限制,但字符串必须由字母、数字、下划线组成。
      • 特殊字符(中文除外)定义1个的时候,进行驻留
  • 代码块:一个文件,一个模块,一个函数,一个类,终端中每一行都是一个代码块
    • 规则
      • 数字:全部驻留
      • 字符串:
        1. 自己定义的字符串全部驻留
        2. 字符串做乘法(乘数不为1)时总长度不超过20
        3. Python3.7以上版本乘法的时候总长度不能超过4096

二、set集合

  • 定义:集合就是一个没有value的字典,无序,去重,可哈希,集合是一个可变数据类型
  • 语法:{1,2,3,4,5}
  • 集合的相关操作

    s = {1,2,3,4,5}

    • s.update(可迭代数据类型)   ---  迭代添加
      s.add('haven')      -----   单个添加
    • # s.pop()       ---- 随机删除
      # s.remove(3)   ---- 指定元素删除
      # s.clear()     ---- 清空(注:结果为set(),为了与字典区分
      # del s         ---- 删除整个集合
    • 只能删了再加

    • for循环遍历

    • 其他操作
      s1 = {1,2,3,4}
      s2 = {3,4,5,6}
      print(s1-s2)  --- 差集 1,2
      print(s1|s2)  --- 并集 1,2,3,4,5,6
      print(s1&s2)  --- 交集 3,4
      print(s1^s2)  --- 反交集 1,2,5,6
      print(s1>s2)  --- 判断s1是否为s2的父集  返回布尔值
      print(s1<s2)  --- 判断s1是否为s2的子集  返回布尔值
      s3 = frozenset({1,2,3,4,5,6}) --- 冻结集合,变成不可变数据类型
    • 重要用法---集合去重
      lis = [1,2,2,3,2,4,5,6,5,6,7]
      print(list(set(lis)))  --- 结果[1, 2, 3, 4, 5, 6, 7]  去重是数组最重要的用法

三、深浅拷贝

  • 赋值 =

    赋值没有创建新的空间,是多个变量指向同一个内存地址

  • 浅拷贝
    • l2 = l1[:] 和 l2 = l1.copy()
    • 只拷贝第一层元素
    • 会创建一个新的容器,容器中的元素和原来容器中的元素指向同一个内存地址
  • 深拷贝
    • import copy

      l2 = copy.deepcopy(l1)

    • 不可变的数据类型和原数据指向同一空间
    • 可变数据类型会创建一个新的空间
  • 总结:
    • 浅拷贝只为最外层可变数据类型创建新的空间
    • 深拷贝会为每一层可变数据类型创建新的空间

原文地址:https://www.cnblogs.com/douzi-m/p/11192283.html

时间: 2024-07-28 17:57:20

小数据池 集合 深浅拷贝的相关文章

python入门(四)小数据池、深浅拷贝、集合

3.8 小数据池 小数据池:缓存机制(驻留机制) ==(用于判断两边的内容是否相等) 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 """

小数据池和深浅拷贝

小数据池 一种数据缓存机制,也称驻留机制 在同一代码块,相同的值不会开辟新的内存 特殊字符除外 小数据池只针对:在控制台时! 数字 :-5到256间的整数会被缓存 布尔值:都会缓存8 字符串 小于等于一个字符时会缓存 超过一个字母但是只有下划线,字母,数字组成也会缓存 如果字符串乘法,那小于等于20个就会缓存,超过则开辟新的内存 手动缓存,需要调用工具 from sys import intern a=intern("[email protected]"*5) b=intern(&qu

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

一.小数据池 == (等于) == 官方:判断等号两边的内容是否相同 ? 白话:判断两个人长得是不是一样 is ? 官方:判断两边的内容是不是一个 ? 白话:判断这两个人是不是一个人 a = 10000 b = 10000 print(a == b) is 是通过内存地址进行判断 print(id(a),id(b)) 输出结果 ,内存地址一致 代码块:一个py文件,一个函数,一个模块,一个类,交互模式(终端)下的每一行 先执行代码块,然后小数据池! 代码块机制内容:Python在执行同一个代码块

相识python 之小数据池 集合

?一. ?小数据池 在说?小数据池之前. 我们先看?一个概念念. 什什么是代码块: 根据提示我们从官?方?文档找到了了这样的说法: A Python program is constructed from code blocks. A block is a piece of Python program text that is executed as a unit. The following are blocks: a module, a function body, and a class

集合以及深浅拷贝和和小数据池--个人一些经验总结

小数据池 --缓存机制 ==哦按段两边你的内容是否相等 a=10 b=10 print(a==b) is 是 a=10 b=10 print(a is b) is 判断机遇内存地址就行判断 print(id (a)) print(id(b)) 小数据池的数字范围:-5~256 代码块:一个py文件 一各函数 一个类 一个模块,终端中每一行都是一个代码块 支持三种数据类型 数字:在同一个代码块下,只要内容相同就采用相同的内存地址(-5以后就不是) 数字在做乘法的时候范围-5~256 1252 在

小数据池 深浅拷贝 集合

小数据池 小数据池 ---- 缓存机制(驻留机制) == 判断两边的内容是否相等 a = 10 b = 10 print(a == b) # True is 判断两边的值内存地址是否相等 a = 10 b = 10 print(a is b) # True print(id(a)) print(id(b)) #True 4329728336 地址是一样的 小数据池的数据范围: -5 ~ 256 a = -5 b = -5 c = -5 print(id(a)) print(id(b)) prin

小数据池、集合和深浅拷贝的个人理解

小数据池----缓存机制(驻留机制) ==:判断两边内容是否相等 is :判断基于内存地址进行判断 小数据池的数字范围-5~256 代码块:一个文件.一个函数.一个模块,终端中每一行是一个代码块 代码块支持的数据类型:数字:在同一个代码块中.只要内容相同就采用相同的内存地址(-6往后都不是)在做乘法的时候范围-5~256.数字在做乘法的时候不能使用浮点数(这些都是在cham中的结果) 字符串:在同一代码块中,只要内容相同就采用相同的内存地址.乘法的时候总长度不能超过20.乘法的时候中文.特殊符号

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

1.==与is == 比较值是否相等 is比较内存地址是否相同 2.小数据池 为了节省内存,当数据在一个范围里的时候,两个值相同的变量指向的是小数据池里的同一个地址 数字范围:-5 ~ 256 num1 = 3 num2 = 3 i1 = id(num1) i2 = id(num2) #此时i1==i2 3.编码 ascii:     8位       1字节     表示一个字符 unicode:  32位     4字节     表示一个字符 utf-8 英文    8位    1字节 欧洲

小数据池 深浅拷贝

代码块,小数据池 在Python中id是内存地址, 只要创建一个数据(对象)那么都会在内存中开辟一个空间,将这个数据临时加到内存中,这个空间是有一个唯一标识的,就好比是身份证号,标识这个空间的叫做内存地址,也就是这个数据(对象)的id,可以利用id()去获取这个数据的内存地址: s = "abc" print(id(s)) #2690615639712 is 和 == ==是比较两边数据是否相等,而is是判断两边内存地址是否相等.如果两边内存地址相等,那么实际是指向同一个内存地址. 内