小数据池

1.什么是小数据池

  • 小数据池就是python中一种提高效率的方式,固定的数据类型使用同一个内存地址。
  • 小数据池支持str字符串,int数字,bool布尔值。

2.小数据池是干嘛的:

  • id() id是查看空间的内存地址,就是给一个假的内存地址来方便判断是否在统一地址中。
  • 小数据池数字的支持范围在 -5 到 256
  • 代码块:
    • 一个文件,一个模块,一个函数,一个类都叫代码块,在cmd终端里每一行代码都叫做代码块
    • 在python中是用字典的方式存储的。
    • 一定要记住先执行代码块,不符合代码块的才会执行小数据池。
  • is 和 的区别: is 判断两个内存地址是否相同。 判断等号两边的值是否相同。 如果is判断相同两边一定相同,判断相同则is不一定相同。
  • 字符串:
    • 字符做乘法的时候总长度不能超过20*
    • 2.自定定义的都驻留*
    • 3.乘数为1的时候 就是赋值*
    • 4.python3.7 乘法的时候总长度不能超过4096*

集合

1.什么是集合。
  • 集合就是一个没有值的字典,唯一,无序的,元素要求可哈希的也就是不可变的。集合是无序的,集合是可变的。

2.集合怎么用。

  • 增加:

    • 变量 . update("添加的内容") 迭代的添加
    • 变量 . add ("添加的内容")
  • 删除:

    • 变量 . pop() 随机删除,其实就是删除第一个元素
    • 变量 . remove() 通过元素删除
    • 变量 . clear() 清空
    • del 变量 删除整个集合
  • 改:删除之后再添加就是改了。

  • 查:直接使用for循环来查看。

  • 特点是天然去重 一行代码去重 print(list(set(li)))

  • 其他的操作:s1 =

    ​ s2 = {3,4,5,6}

    • print(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.浅拷贝:copy

  • 只拷贝第一层。

  • 浅拷贝会创建一个新的列表(容器),新创建的列表中的元素和原列表的元素用的是同一个内存空间。

  • # 浅拷贝的时候只拷贝第一层元素
    # 浅拷贝在修改第一层元素(不可变数据类型)的时候,拷贝出来的新列表不进行改变
    # 浅拷贝在替换第一层元素(可变数据类型)的时候,拷贝出来的新列表不进行改变
    # 浅拷贝在修改第一层元素中的元素(第二层)的时候,拷贝出来的新列表进行改变
    
  • # 赋值:就是公用一个内存地址,改变任何一个值,都会发生改变。
    # 浅拷贝:就是拷贝第一层元素,改变和替换第一层元素,新拷贝出来的列表不进行改变。改变第一层元素中的元素都发生改变。
    # 深拷贝:不可变的数据类型和源列表指向的是同一个内存空间,可变的数据类型开辟一个新的内存空间,就是随便改和我没关系。
    

2.深拷贝:import copy

  • 不可变的数据类型和原列表指向同一个空间。

  • 可变的数据会创建一个新的空间。

  • 就是随便改,想干什么干什么互不影响。

  • #深拷贝
    import copy
    
    lst = [1, 2, 3, [5, 6, 7]]
    lst1 = copy.deepcopy(lst)
    lst1[-1].append(8)
    print(lst)
    print(lst1)
    

数据类型的补充

  • . capitalize() 首字母大写。
  • . title() 每一个单词的首字母大写。
  • . count("a") 统计出现的次数。
  • . swapcase() 大小写转换。
  • . find() 查找,找不到就返回-1.
  • . index() 查找,找不到就直接报错。
  • . reverse() 反转。
  • . sort() 升序。
  • . sort(recerse=True) 降序。
  • 总结:
    • 字符串转成数字必须是十进制的数字。
    • 数字转成字符串可以直接转换。
    • 列表转成字符串用 ” “. join() 可迭代的对象中不能出现数字
    • 字符串转成列表用分割split
    • 除了字典,其他的数据类型之间可以直接相互转换。
    • 有序的:str,int,bool,list,tuple。
    • 无序的:dict,set。
    • 可变的:list,dict,set。
    • 不可变的:str,int,bool,tuple。
    • 访问的方式:
      • 直接访问:int,bool,set。
      • 顺序访问:list,tuple,str。
      • 通过键访问:dict。
  • 坑:
    • 循环删除索引的时候,要倒叙删除,否则会报错,或者结果不正确。
    • 循环添加列表元素的时候,会形成死循环。
    • 字典在循环的时候不能改变字典的大小
    • 先定义一个列表,循环列表 列表删除字典。
  • 编码的进阶:
    • encode() 编码
    • decode() 解码
    • 用什么编码集编码,就用什么编码集解码。
posted on 2019-08-06 16:34  bhwl  阅读(110)  评论(0编辑  收藏  举报