zoukankan      html  css  js  c++  java
  • day06

                                                   第六天的学习总结

    1,深度拷贝和浅拷拷贝

    拷贝就是一个复制的过程,把一个值赋值给另一个值,这个是值的拷贝就是拷贝的地址,如果被拷贝的值有变化

    那么拷贝的值就会变化所以说不是深度拷贝和浅拷贝,

    什么是浅拷贝

    浅拷贝就是在拷贝的过程,把所有的东西都复制过来了,就不会在变化了.除非在复制的过程中复制的有可变化的类型

    那样,如果改变被复制的量中的可变类型,那么复制后的可变的类型就会发生变化.

    例如:ls1=[1,2,3,4,5]

    拷贝:ls2 = ls1.copy() 

    如果改变sl1中的[0] 为10 ==> ls1[0] = 10  那么sl2中的[0] 不会发生变化.如图

    但是:ls1 = [1,2,3,4,5,[10,20]]

    拷贝:ls2 = ls1.copy() 

    这样的话如果改变sl1中的[5] ===> ls1[5][0] = 100 

    那么sl2中的 ls2[5][0]值也会发生变化

    这上面的两种改变,是因为第一种改变sl1中的值,它的值是变了,但是1这个值的地址是不会变的,所以ls2中的值不会变

    第二种就是改变了 列表 中的值,意思就是把里边的地址给改变了

     什么是深拷贝

    from copy import deepcopy

    deepcopy(变量名)

    深拷贝的内容是不会发生变化的,

    因为深拷贝的不变的量是和浅拷贝一样的,只是拷贝的可变的量的时候会强制开辟一个新的空间

    保存这个可变的量. 

    所以说深拷贝,拷贝的量是不会跟着被拷贝的量的变化发生变化的.

    元组类型

    元组就是使用括号来表示,元组重要的就是两个方法

    元组是可以存放所有类型的

    常规操作

    元组如果只存一个数据,那么(1,)必须要加逗号,不然就会认为是一个常量,不是元组

    取值是通过索引来取值

    拼接就是两个元组的相加,?

    方法有

    1.count(0) 这个方法是表示的是对象0 在元素中出现的次数

    2.index(0,4,len(tl)) 对象0在区间4 到末尾出现的次数 如果没有就会报错

    元组不可变的分析

    a=(10,'abc',[100])

    a[0] = 100 这种的方式不支持 不管是可变与不可变的类型都是不能被改变的

     

    字典类型

    字典就是一个容器,存放多个值的变量

    在Python中

    单列容器(list tuple)

    双列容器(map) dict  只有一个双列容器,存储数据是成对出现 key -- value 存储方式

    key 是取值的唯一性,key一旦被确定,就需要唯一确定(不能被改变)

    字典中value是任意类型.其中key是不能被重复,重复后就会被覆盖.value可以为多个值

    字典的定义

    可以是空字典

    d1 = {}

    d2 =dict()

    使用map映射创建字典

    d3 = dict({"a":1,"b":2})

    set

    1.定义
    s1 = set()
    s2 = set({1, 2, 3})

    2.重点:数据具有唯一性
    # i) 单列数据集合:str,list,tuple,set 双列:dict
    # ii) 无序存储:无key无index,无法取值
    # iii) 可变数据类型,内部可以存放任意类型数据,但数据具有唯一性

    3.运算
    p_set = {'a', 'b', 'c', 'egon'}
    l_set = {'x', 'y', 'z', 'egon'}

    # 交集 &
    res = p_set & l_set
    print(res)
    res = p_set.intersection(l_set)
    print(res) # {'egon'}

    # 并集
    res = p_set | l_set
    print(res)
    res = p_set.union(l_set)
    print(res) # {'z', 'c', 'y', 'x', 'b', 'a', 'egon'}

    # 差集
    res = p_set - l_set
    print(res) # {'a', 'b', 'c'}
    res = l_set.difference(p_set)
    print(res) # {'x', 'z', 'y'}

    # 对称差集
    res = p_set ^ l_set
    print(res)
    res = p_set.symmetric_difference(l_set)
    print(res) # {'y', 'a', 'b', 'x', 'z', 'c'}

    '''

    '''
    了解:
    sup_set = {1, 2, 3, 4, 5}
    sub_set = {1, 2, 3}
    temp_set = {3, 2, 1}
    flag_set = {7, 8, 9}

    print(sup_set > sub_set) # True
    print(sup_set < sub_set) # False
    print(temp_set == sub_set) # True
    # 两个set是否没有交集
    res = flag_set.isdisjoint(temp_set) # True

  • 相关阅读:
    jekins构建自动化项目的步骤
    CRT 和mysql 中文乱码解决方式
    Jenkins的配置(rpm red hat方式)
    MapReduce job.setNumReduceTasks(0)思考
    浏览器angent分析工具
    npm中的 --save-dev
    computed与methods的异同
    JS函数种类详解
    Vue.js和Nodejs的关系
    AJAX复习笔记
  • 原文地址:https://www.cnblogs.com/WBaiC1/p/10730002.html
Copyright © 2011-2022 走看看