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)

原文地址:https://www.cnblogs.com/zhangdadayou/p/11171858.html

时间: 2024-10-10 01:23:16

python入门(四)小数据池、深浅拷贝、集合的相关文章

小数据池 深浅拷贝 集合

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

小数据池 深浅拷贝

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

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

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

python基础之小数据池、代码块、编码

一.代码块.if True: print(333) print(666) while 1: a = 1 b = 2 print(a+b) for i in '12324354': print(i) 虽然上面的缩进的内容都叫代码块,但是他不是python中严格定义的代码块.python中真正意义的代码块是什么? 块是一个python程序的文本,他是作为一个单元执行的.代码块:一个模块,一个函数,一个类,一个文件等都是一个代码块. 而对于一个文件中的两个函数,也分别是两个不同的代码块: def fu

Python 代码块 小数据池

一  代码块 什么是代码块??? Python程序是由代码块构造的.先举一个例子: 1 for i in '12334567': 2 print(i) 1 def func(): 2 print('Hello,world!') 1 class A: 2 name = 'colin' 从上面的例子可以称为代码块,虽然上面的缩进的内容都叫代码块,但是他们并不是python中严格定义的代码块. 那么,python中真正意义上的代码块又怎么定义? 因此,我们定义:一个模块,一个函数,一个类,一个文件等都

python基础之小数据池

关于池的概念,大家也许知道 连接池,代理池.然而现在我们提到的小数据池,则是一些Int和string已经创建好的并放在池子里等着我们去调用的对象. '''对于整数,Python官方文档中这么说: The current implementation keeps an array of integer objects for all integers between -5 and 256, when you create an int in that range you actually just

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 definiti

pyhon学习第六天 代码块,小数据池(缓存机制,驻留机制),is == id =,字符编码

1.代码块 能够实现某项功能的:模块,函数,类,文件 ##在python的交互模式下,一行代码就是一个代码块分别储存在不同文件中 2. id is ==和= =是赋值 ==比较两边数据内容是否相等 is 比较内存地址是否一致(内存里的id都是唯一的) id() 查看数据的id地址 3.小数据池(缓存机制,驻留机制): 小数据池是python对内存做的一个优化 优化内容:python将-5到256的整数.以及一定规律的字符串提前在内存找那个创建了固定的储存空间 适用小数据池的数据类型:*****

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字节 欧洲