数据池,集合及深浅拷贝
  1. 小数据池(python中一种提高效率的方式,固定数据类型使用同一个内存地址)

    • 支持str,int,bool

    • id 查看空间的内存地址 获取开辟空间的一种地址 print(id(a))

    • 代码块: 一个文件,一个模块,一个函数,一个类,终端中每一行都是一个代码块

      在python中是用字典的方式存储

    • is # 判断两个内存地址是否相同 # 必须记住
      == # 判断等号两边的值是否相同 # 必须记住

    • 字符串:1.字符串在做乘法的时候总长度不能超过20,进行驻留 # 记住
      2.自己定义的字符串 长度不限制 字符串必须(字母,数字.下划线)组成,进行驻留
      3.特殊字符(中文除外)定义1个时候,进行驻留
      4.字符串*1 其实就是赋值

    • 如果is判断相同 == 一定相同
      如果==判断相同 is 不一定相同

      a = 1000
      b = 1000
      print(a == b)a = "alexdsb" * 2
      b = "alexdsb" * 2
      print(a is b)a ="12345678912345678qwertyuioqwertUIOWERTYUIOQghjksdfghjk____asdgadsfasdfgasdgasdgfsdaf"
      b ="12345678912345678qwertyuioqwertUIOWERTYUIOQghjksdfghjk____asdgadsfasdfgasdgasdgfsdaf"
      print(a is b)a = "你"
      b = "你"
      print(a is b)   # pycharm中是True 因为执行了代码块,终端中是Falsea = "@"
      b = "@"
      print(a is b)a = "你好"
      b = a * 1
      print(a is b)          先执行代码块,不符合代码块才会执行小数据
      
    • 代码块的规则:
      数字: 全部驻留
      字符串:
      1.字符做乘法的时候总长度不能超过20
      2.自定定义的都驻留
      3.乘数为1的时候 就是赋值
      4.python3.7 乘法的时候总长度不能超过4096

    • 总结:
      小数池 -- 支持: str,int,bool
      小数据池数字: -5 ~ 256
      小数据池字符串: 乘法时长度不能超过20

    • 怎么能自己驻留?

      需要使用python的内置模块
      from sys import intern
      a = intern("@@@@@@"*20)
      b = intern("@@@@@@"*20)
      print(a is b)        # 自己进行驻留
    • 小数据在哪用?
      1.面试的时候偶尔会用到
      2.解决自己的疑惑

  2. 集合( 集合就是一个没有值的字典,遵循:唯一,无序,元素要求可哈希(不可变)------------------------set {1,2,3}

    • s = {1,2,3,"123",False,(1,2,3,4)}

    • 集合是无序的

    • 集合是可变的

    • 集合的增删改

      增:

      s.update("3456")  # 迭代添加
      print(s)s.add("怼怼")
      print(s)

      删:

      s = {1,2,3,"123",False,(1,2,3,4)}
      print(s)
      s.pop()   #随机删除
      s.remove(3) # 通过元素删除
      s.clear()    # 清空
      del s        #删除整个集合
      print(s)

      改:删了再加

      查:

      for

      天然去重 -- 唯一

      其他操作:

      s1 = {1,2,3,4,5,6,7}
      s2 = {3,4,5,6print(s1 - s2)  #差集
      print(s1 | s2)  #并集   (合集)
      print(s1 & s2)  #交集
      print(s1 ^ s2)  #对称差集  -- 反交集
      print(s1 > s2)  # 超集   -- 父集
      print(s1 < s2)  # 子集

      冻结集合(可变 转换成 不可变) -- 更不常用:

      f_s = frozenset({1,2,3,4,5})
      dic = {f_s:"1"}
      print(dic)

      集合在哪里用

      1. 去重
        li = [1,2,3,4,5,2,2,2,33,3,3,2,2,1,]
        print(list(set(li)))]

      2. 面试题:
        li = [1,2,3,4,2,1,3] #一行代码去重
        print(list(set(li)))

    1. 深浅拷贝(拷贝 -- copy 复制了一份)

      l1 = [1,2,3,4,[5,6,7,]]
      l2 = l1  # 赋值    赋值不是拷贝
      l1.append(8)
      print(l1)
      print(l2)
      • 浅拷贝
      l1 = [1,2,3,4,[4,5,6]]
      l2 = l1[:]   # 浅拷贝
      l2 = l1.copy() # 浅拷贝  -- 只拷贝第一层
      print(id(l1[0]))
      print(id(l2[0]))
      浅拷贝会创建一个新的列表(容器),
      新创建的列表中的元素和原列表的元素用的是同一个内存空间
      l1 = [1,2,3,4]
      l2 = l1.copy()
      print(l1)
      print(id(l1))
      print(id(l2))
      print(id(l1[0]))
      print(id(l2[0]))li = [1,2,32,[3,4,5]]
      l2 = li.copy()
      li.append(8)
      print(l2)
      print(li)li[-1].append(8)
      print(l2)l1 = [1,2,3,(1,2,3)]
      l2 = l1.copy()
      l2[-1] = 6
      print(l1)  # 不变
      print(l2)  # 不变l1 = [1,2,3,4,[5,6,7,]]
      l2 = l1.copy()
      l1[-1].append(8)
      print(l2)  #[1,2,3,4,[5,6,7,8]]li = [1,2,3,4,]
      l2 = li  # 赋值   两个变量指向了一个列表内存地址
      li.append(9)
      print(l2)l1 = [1,2,3,4,5,]
      l2 = l1.copy()
      l1.append(8)
      print(l2)
      print(l1)l1 = [1,2,3,[4,5,6]]
      l2 = l1.copy()
      l2[-1] = 77
      print(l1)
      print(l2)

      深拷贝:import copy

      深拷贝:import copy
      li = [1,2,3,4,5,[6,7,8]]
      l2 = copy.deepcopy(li)
      print(li)
      print(id(li))
      print(id(li[-1]))
      print(l2)
      print(id(l2))
      print(id(l2[-1]))深拷贝 --
      不可变的数据类型和原列表指向同一个空间
      可变数据会创建一个新的空间import copy
      li = [1,2,3,4,5,[6,7,8]]
      l2 = copy.deepcopy(li)
      li[-1].append(678)
      print(l2)import copy
      li = [3,4,5,[1,2,3,4],6,7,8,{"k":'v'}]
      l2 = copy.deepcopy(li)
      li[-1]['k'] = "a"
      print(li)
      print(l2)

      怎么用,在哪用:

      dic = {}   # "v":4
      li = []    #[{"v":0},{"v":1},{"v":2},{"v":3},{"v":4}]
      for i in range(0,5):
      dic["v"] = i
      li.append(dic)
      print(li)
      • 1.面试
        2.不让修改原数据的时候,使用
posted on 2019-06-11 19:43 七橼77 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/-777/p/11005589.html

数据池,集合及深浅拷贝相关推荐

  1. 集合(set) 深浅拷贝

    set集合 , 深浅拷⻉以及部分知识点补充 ⼀. 基础数据类型补充 1. join() 加入 split的逆反 把列表转化为字符串 ,也可以遍历字符串 不能是整型 用于转换类型 join 是遍历(迭代 ...

  2. Python之基础数据补充、set集合和深浅拷贝

    基础数据补充 字符串的常用操作         1. join() li = ["李嘉诚", "麻花藤", "⻩海峰", "刘嘉玲 ...

  3. 集合、深浅拷贝、文件操作(读、写、追加)函数初识(参数)

    小数据池 #int ==比较数值 is 比较内存地址 id 测试内存地址 #str 不能含有特俗字符 单个元素*数字,不能超过21 i1 = 'a'*20 i = 'a'*20 id一样 i1 = ' ...

  4. 相识python 之小数据池 集合

    ⼀一. ⼩小数据池 在说⼩小数据池之前. 我们先看⼀一个概念念. 什什么是代码块: 根据提示我们从官⽅方⽂文档找到了了这样的说法: A Python program is constructed fr ...

  5. set集合、深浅拷贝以及部分知识点补充

    基础数据类型补充 字符串的拼接 lis = ["李嘉诚", "麻花藤", "黄海峰", "刘嘉玲"]s = " ...

  6. 基本数据类型补充、set集合、深浅拷贝

    基本数据类型的补充 1,关于int和str在之前的学习中已经介绍了80%以上了,现在再补充一个字符串的基本操作 str.join(可迭代对象): li = ['李嘉诚','何炅','海峰','刘嘉玲' ...

  7. python之set集合、深浅拷贝

    一.基本数据类型补充 1,关于int和str在之前的学习中已经介绍了80%以上了,现在再补充一个字符串的基本操作: li = ['李嘉诚','何炅','海峰','刘嘉玲']s = "_&qu ...

  8. set集合和深浅拷贝

    set集合 特点: 无序, 不重复, 元素必须可哈希(不可变) 作用: 去重复 本身是可变的数据类型. 有增删改查操作. frozenset()冻结的集合. 不可变的. 可哈希的三. 深浅拷贝 1. ...

  9. python里clear和copy_python (集合和深浅拷贝)

    一. 知识点补充 1. 列表和字典不能在循环过程中进行增删操作,因为列表索引在循环过程会发生改变,字典规定循环不可改变. 删除方法: 将需要大量删除的列表或者字典遍历取出要删除的对象,放入一个空列表, ...

最新文章

  1. SAP Distribution Model初探
  2. 美国银行将 AI 应用于企业应收账款处理;联合国或将利用机器学习技术帮助救灾工作...
  3. maven进行junit测试时报错(二)
  4. python 内存分析工具_[转] python运行时内存分析工具meliae
  5. 关闭进程_当手机快没电时,别再结束进程关闭手机了,不仅没用还更耗电
  6. 计算机网络课程设计(一)--- VLAN划分和动静态基础配置及其思考
  7. 软测面试丨关于JMeter的面试问题,看这篇就够了!
  8. Flash版Logo语言9.83
  9. SQL数据库置疑恢复
  10. 【愚公系列】2022年04月 微信小程序-image图片
  11. 微信小程序豆瓣电影学习知识总结
  12. 使用CA签发的服务器证书搭建Tomcat双向SSL认证服务
  13. 合同生效需要哪些要件
  14. 【R language】 清楚区分输出函数 cat、print、paste 区别 经验分享
  15. Mendix敏捷开发零基础学习《三》-高级 (数据删除保护机制、数据关联删除、Security安全、调用外部接口、调用JAVA代码)
  16. python计算ks值 代码_python画KS图,求KS值
  17. C语言:围圈报数游戏
  18. 什么是共模信号_为什么要抑制共模信号
  19. ASM 函数参数处理
  20. 深度学习词汇 Developing Our Own Deep Learning Toolset

热门文章

  1. Multisim仿真——编码器系列
  2. gitlab 开启邮箱认证通知
  3. 泵站水闸自动化系统调试方案
  4. Android系统wifi之p2p(wifi直连)配置文件权限导致应用不能使用wifi问题
  5. matlab画电子云,北理工理论物理导论实验一:用MATLAB绘制电子云
  6. 女人拥有好皮肤的12条箴言
  7. 快乐大本营html5小游戏,《快乐大本营》创意游戏获赞 综艺节目该静静了
  8. Android怎么自定义布局,Android 创建自定义的布局
  9. 待遇 新时达机器人_新时达机器人公司
  10. 效果炸裂!新版Midjourney画出100%逼真情侣,人类画师无了