zoukankan      html  css  js  c++  java
  • python入门(四)小数据池、深浅拷贝、集合

    小数据池
    小数据池:缓存机制(驻留机制)

    ==(用于判断两边的内容是否相等)

    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 深浅拷贝
    赋值

    a=20#开辟一个内存空间存放20,a指向这个内存地址
    b=a#把a的值赋值给b,这时b指向存放20的内存地址
    print(id(a))
    print(id(b))
    结果为 1403154048 1403154048
    1562835508499

    浅拷贝

    拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。也就是,把对象复制一遍,但是该对象中引用其他对象我不复制

    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]]

    深拷贝

    外围和内部元素都进行拷贝对象本身,而不是引用。也就是把对象复制一遍,并且该对象中引用对象也复制

    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]]

    总结:浅拷贝只是拷贝第一层元素,第一层元素引用的元素不复制只是引用;浅拷贝的时候,只会开辟一个新的容器列表,其他元素使用的都是源列表中的元素;

    深拷贝:拷贝第一层元素和第一层元素引用对象,不可变数据进行公用,可变的数据类型再次开辟空间

    3.10 集合(set)

    什么是集合?

    可以理解成没有值的字典,无序,不支持索引

    天然去重

    定义集合

    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'}

    集合的增、删、改、查

    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)

    其他操作:

    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)

  • 相关阅读:
    P1135 奇怪的电梯
    pycharm设置快捷键在keymap下拉列表没有eclipse怎么办
    记录selenium简单实现自动点击操作
    selenium 批量下载文件,json,重命名
    python3.6+selenium使用chrome浏览器自动将文件下载到指定路径
    selenium + Java 设置文件默认下载路径
    详解介绍Selenium常用API的使用Java语言(完整版)
    Pycharm安装robot framework运行插件
    Python之robotframework+pycharm测试框架!
    基于Python3 Robot framework环境搭建
  • 原文地址:https://www.cnblogs.com/yhx003/p/11438399.html
Copyright © 2011-2022 走看看