小数据池

  1. int: -5~256
  2. str:
    1. 字母,数字长度任意符合驻留机制
    2. 字符串进行乘法时总长度不能超过20
    3. 特殊符号进行乘法时只能乘以0

代码块:

一个py文件,一个函数,一个模块,终端中的每一行都是代码块

  1. int:-5~无穷大
  2. str:
    1. 定义字符串的时候可以是任意的
    2. 字符串(字母,数字)进行乘法时总长度不得超过20
    3. 特殊字符(中文,符号)进行乘法时乘以0或者1
  3. bool:
    1. True
    2. False

is是判断两边的内存地址是否相同

==判断两个值是否相等

代码块、小数据池同在的情况下先执行代码块。

驻留机制:节省内存空间,提升效率(减少了开辟空间和销毁空间的耗时)

集合

  1. 集合是python中的数据类型之一

  2. 定义方式:set

    • 集合就是一个没有值的字典
  3. 字典的值:唯一,不可变

  4. 集合:无序,可变

  5. 集合天然去重

    # s = {1,23,4,2,1,2,3,1}
    print(s)
    输出结果:{1, 2, 3, 4, 23}
    # 面试题:
    lst = [1,223,1,1,2,31,231,22,12,3,14,12,3] print(list(set(lst)))
    输出结果:[1, 2, 223, 3, 231, 12, 14, 22, 31]
  6. s = {} #空字典

    s = set() #空集合

  7. 增:

     s = set()    
    
    s.add("alex")   #直接添加,
    
    输出结果为:{'alex'}    
    
     s.update("wusir")   #迭代添加,
    
    输出结果为:{'r', 'i', 'w', 's', 'u'}    
    
     set("wusir")    #迭代添加,
    
    输出结果为:set()
  8. s = {100,0.1,0.5,1,2,23,5,4}
    s.remove(4) # 通过元素删除
    print(s)
    s.clear() # 清空
    s.pop() # 随机删除 (最小的)
    print(s)
  9. 改:

    • 先删后加
  10. 查:

    • for 循环
  11. 其他操作:

    1. 差集--“-”
    2. 交集--“&”
    3. 并集--“|”-管道符
    4. 反交集--“^”
    5. 子集--“>”返回的是一个布尔值
    6. 父集(超集)--"<"返回的是一个布尔值
    7. 冻结集合:frozenset()

深浅拷贝

  1. ​ 赋值:将多个变量指向一个同一个内存地址就是赋值

  2. 浅拷贝:

    1. 只拷贝第一层元素的地址,只有修改第一层的时候元数据不受影响

    2. 给可变数据类型进行添加的时候源数据会受影响

    3. = 是修改,.append是添加

    4. 可变数据类型能够添加和修改,不可变数据类型只能修改

      a = [1,2,3,[4,5]]
      b = a[:] # 浅拷贝
      print(id(a[-1][0]))
      print(id(b[-1][0]))
      a.append(9)
      print(a)
      print(b)
      a = [1,2,3,[4,5,6,[9,10]],67]
      b = a # 赋值
      b = a[:]
      a[-2].append(10)#[1, 2, 3, [4, 5, 6, [9, 10], 10], 67]
      a[-2][-1].append(10)#[1, 2, 3, [4, 5, 6, [9, 10, 10]], 67]
      print(b)
  3. 深拷贝:不可变数据类型内存地址共用,可变数据类型新开辟一个空间

    # import copy  # 导入 copy模块
    a = [1,2,3,[4,5],6]
    b = copy.deepcopy(a)
    print(id(a[-2]))#2812949845896
    print(id(b[-2]))#2812949847304
    print(a)
    print(b)
    print(a == b) #True
    print(id(a),id(b))
    print(a is b) #False

可变数据类型:list(列表),dict(字典),set(集合)

不可变数据类型:int(整型),str(字符串),tuple(元祖),bool(布尔值)

从入门到自闭之Python集合,深浅拷贝(大坑)的更多相关文章

  1. python学习打卡 day07 set集合,深浅拷贝以及部分知识点补充

    本节的主要内容: 基础数据类型补充 set集合 深浅拷贝 主要内容: 一.基础数据类型补充 字符串: li = ["李嘉诚", "麻花藤", "⻩海峰 ...

  2. 6.Python初窥门径(小数据池,集合,深浅拷贝)

    Python(小数据池,集合,深浅拷贝) 一.小数据池 什么是小数据池 小数据池就是python中一种提高效率的方式,固定数据类型,使用同一个内存地址 小数据池 is和==的区别 == 判断等号俩边的 ...

  3. Python基础知识(六)------小数据池,集合,深浅拷贝

    Python基础知识(六)------小数据池,集合,深浅拷贝 一丶小数据池 什么是小数据池: ​ 小数据池就是python中一种提高效率的方式,固定数据类型使用同一个内存地址 代码块 : ​ 一个文 ...

  4. Python原理 -- 深浅拷贝

    python原理 -- 深浅拷贝 从数据类型说开去 str, num : 一次性创建, 不能被修改, 修改即是再创建. list,tuple,dict,set : 链表,当前元素记录, 下一个元素的位 ...

  5. Python的深浅拷贝

    Python的深浅拷贝 深浅拷贝 1. 赋值,对于list, set, dict来说, 直接赋值. 其实是把内存地址交给变量并不是复制一份内容 list1 = [']] list2 = list1 p ...

  6. 从入门到自闭之python初识

    Day 01 整型: 对比: 在python 2 版本中有整型,长整型long 在python 3 版本中全部都是整型 用于计算和比较 整型和布尔值的转换 二进制转换成十进制: ​print (int ...

  7. day07 python列表 集合 深浅拷贝

    day07 python   一.知识点补充     1."".join() s = "".join(('1','2','3','4','5'))  #将字符串 ...

  8. python摸爬滚打之day07----基本数据类型补充, 集合, 深浅拷贝

    1.补充 1.1  join()字符串拼接. strs = "阿妹哦你是我的丫个哩个啷" nw_strs = "_".join(strs) print(nw_s ...

  9. Python学习基础(二)——集合 深浅拷贝 函数

    集合 # 集合 ''' 集合是无序不重复的 ''' # 创建列表 l = list((1, 1, 1)) l1 = [1, 1, 1] print(l) print(l1) print("* ...

随机推荐

  1. Flask-特殊的装饰器

    视图函数中的装饰器 -----------------------视图中的装饰器---------------------- 1.如果使用的是函数视图,那么自己定义的装饰器必须放在`app.route ...

  2. 微信小程序底层原理与运行机制类文章学习

    参考文档 小程序底层实现原理及一些思考 为了安全和管控, 双线程执行 Web Worker执行用户的代码; UI线程执行大部分的功能. 微信小程序架构原理 只通过mvvm模板语法动态改变页面, 不支持 ...

  3. Navicat Premium 12 卸载和注册表的删除

    卸载就不用我说了,win10也好,win7也好直接windows设置里的卸载,或者你觉得别的软件卸载的比较干净也行 不过还是不会删掉注册表,甚至文件夹都不删除, ... 这是卸载 ,在此说一下,为了安 ...

  4. HDU 1024 Max Sum Plus Plus ——(M段区间的最大和)

    感觉有点奇怪的是这题明明是n^2的复杂度,n=1e6竟然能过= =.应该是数据水了. dp[i][j]表示前j个数,分成i段,且最后一段的最后一个为a[j]的答案.那么转移式是:dp[i][j] = ...

  5. mybatis中的foreach条件参数过多时,#和$效率比较

    在客户端查询都小于1秒. 测试: mybatis中in条件12.3万数据$ : 6051 ms# : 27045 ms 1.2万数据$ : 1154 ms# : 24387 ms 5 万数据$ : 2 ...

  6. NSLock的一些使用

    在多线程的编程环境中,锁的使用必不可少! 使用时,基本方法就是: [lock lock]; // 加锁 [obj yourMethod]; // 处理你的操作 [lock unlock]; // 解锁 ...

  7. 计数原理,递推,求从左边能看到l个棒子,右边能看到r个棒子的方案数目

    题意 有高为 1, 2, …, n 的 n 根杆子排成一排, 从左向右能看到 L 根, 从右向左能看到 R 根.求有多少种可能的排列方式.   solution: 数据范围仅200,本来是往组合数学方 ...

  8. decimal模块 --数字的精度、保留小数位数、取整问题

    开始之前需要注意一点是:精度值为数字的总位数,如:1.23, 精度值为3: 0.123,精度值也为3 1.更改默认精度值后,直接进行计算即可保留对应精度值 from decimal import ge ...

  9. QObject 的拷贝构造和赋值操作

    QOject 中没有提供一个拷贝构造函数和赋值操作符给外界使用,其实拷贝构造和赋值的操作都是已经声明了的,但是它们被使用了Q_DISABLE_COPY () 宏放在了private区域.因此所有继承自 ...

  10. Qt自定义窗口部件

    QtDesigner自定义窗口部件有两种方法:改进法(promotion)和插件法(plugin)   改进法   1.改进法之前,要先写好子类化QSpinBox后的HexspinBox.h和Hexs ...