Python之路Day06

小数据池

  • == 判断两个值是否相等

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

    • a=10
      b=10
      print(a is b)
  • id() -- 查看内存地址

代码块

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

    • int,str,bool

    • int: -5~正无穷

      • a=1000
        b=1000
        print(id(a),id(b))
        print(a,b)
    • str:

      • 定义字符串的时候可以任意,
      • 字符串(字母,数字)作乘法时字符串长度不能超过20
        • python3.7以上版本为<=4096
      • 特殊符号(中文,符号)进行乘法时只能乘1或者乘0
    • bool

      • True
      • False
  • 小数据池与代码块同在的情况下先执行代码块

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

小数据池

  • int,str,bool
    • int:-5~256
    • str:
      • 只支持字母,数字;长度任意符合驻留机制
      • 字符串进行乘法时总长度不能超过20
      • 特殊符号进行乘法时只能乘0

深浅拷贝

  1. 以后尽量避免
  2. 面试必问
赋值
  • a=[1,2,3,4]
    b=a
    print(id(a),id(b))
浅拷贝
  • 赋值:将多个变量名指向同一个内存地址

  • copy -- 拷贝

  • (壳是另开的,馕是一样的)

    • a=[1,2,3,4,5]
      b=a.copy()
      print(id(a[0]))
      print(id(b[0]))
    • a=[1,2,3,4,5]
      b=a[:]      #切片  浅拷贝
      print(id(a[-1][0]))
      print(id(b[-1])[0])
    • a=[1,2,3,[4,5]]
      b=a[:]
      
  • 浅拷贝

    • 只拷贝第一层元素的地址,修改时只有修改第一层的时候源数据不进行改变
    • 给可变数据类型添加的时候源数据会受影响
      • 可变数据类型可以修改添加,不可变类型只能修改
深拷贝
  • import copy -- 导入copy模块

  • import copy
    a=[1,2,3,[4,5],6]
    b=copy.deepcopy(a)
  • 深拷贝:不可变数据类型共用,可变数据类型新开辟一个空间(无论一方怎么改,另一方都不会改变)

集合

  • Python中数据类型之一,无序,可变,天然去重
  • 集合 -- set
    • s=set():空集合
    • 集合就是一个没有值的字典(元素唯一,不可变)

集合方法

增加
  • s.add()
  • s,update(‘alex) -- 迭代添加
    • print(set('alex')) -- 迭代添加
删除
  • s.remove() -- 通过元素删除
  • s.clear() -- 清空
  • s.pop() -- 随机删除(最小的)
  • 先删后加
  • for循环
其他操作
  • 减法:差集
  • &:交集
  • |(管道符):并集
  • ^:反交集
  • >:判断是否子集
  • print(frozenset({1,2,3,4}))冻结集合(使集合不可变)

猜你喜欢

转载自www.cnblogs.com/zlx960303/p/11907136.html