• 集合类型内置方法和拷贝浅拷贝深拷贝


    集合类型内置方法

    用途:数学里的集合

    定义方式:{ }内用逗号隔开多个元素,元素只能是不可变类型,有两个特 征 * 1.会删除重复值 * 2.会打乱集合内的值

    hobby_set = {'reading','running','sleeping','singing','sleeping'}
    print(hobby_set)

    #自定义set方法
    hobby_list = ['reading','running','sleeping','singing','sleeping']
    def set1(hobby_list) :
       s = set()
       for i in hobby_list :
           s.add(i)
       print(s)
    set1(hobby_list)
    {'singing', 'running', 'reading', 'sleeping'}

    常用操作和内置方法:

    优先掌握

    # 长度len
    hobby_set = {'reading','running','sleeping','singing','sleeping'}
    print(len(hobby_set))
    4

     

    # in 和 not in
    hobby_set = {'reading','running','sleeping','singing','sleeping'}
    print('reading' in hobby_set)
    print('read' in hobby_set)
    True
    False

     

    #  并集 union
    hobby_set = {'reading','running','sleeping','singing','sleeping'}
    hobby_set2 = {'reading','running','comic','swimming'}
    print(hobby_set | hobby_set2)
    print(hobby_set.union(hobby_set2))
    {'reading', 'sleeping', 'comic', 'swimming', 'running', 'singing'}
    {'reading', 'sleeping', 'comic', 'swimming', 'running', 'singing'}

     

    # & 交集 intersection
    hobby_set = {'reading','running','sleeping','singing','sleeping'}
    hobby_set2 = {'reading','running','comic','swimming'}
    print(hobby_set & hobby_set2)
    print(hobby_set.intersection(hobby_set2))
    {'running', 'reading'}
    {'running', 'reading'}

     

    # - 差集 differdnce
    hobby_set = {'reading','running','sleeping','singing','sleeping'}
    hobby_set2 = {'reading','running','comic','swimming'}
    print(hobby_set - hobby_set2)
    print(hobby_set2 - hobby_set)
    print(hobby_set.difference(hobby_set2))
    {'singing', 'sleeping'}
    {'comic', 'swimming'}
    {'singing', 'sleeping'}

     

    # ^ 对称差集 symmetric_difference
    hobby_set = {'reading','running','sleeping','singing','sleeping'}
    hobby_set2 = {'reading','running','comic','swimming'}
    print(hobby_set ^ hobby_set2)
    print(hobby_set2 ^ hobby_set)
    print(hobby_set.symmetric_difference(hobby_set2))
    {'sleeping', 'comic', 'swimming', 'singing'}
    {'sleeping', 'comic', 'swimming', 'singing'}
    {'sleeping', 'comic', 'swimming', 'singing'}

     

    # ==
    hobby_set = {'reading','running','sleeping','singing','sleeping'}
    hobby_set2 = {'reading','running','comic','swimming'}
    print(hobby_set == hobby_set2)
    False

     

    # 父集 :>  >=  issuperset
    hobby_set = {'reading','running','sleeping','singing','sleeping'}
    hobby_set2 = {'reading','running','comic','swimming'}
    hobby_set3 = {'reading','sleeping'}
    print(hobby_set > hobby_set3)
    print(hobby_set2.issuperset(hobby_set3))
    True
    False

     

    # 子集 <  <=  issubset
    hobby_set = {'reading','running','sleeping','singing','sleeping'}
    hobby_set2 = {'reading','running','comic','swimming'}
    hobby_set3 = {'reading','sleeping'}
    print(hobby_set < hobby_set2)
    print(hobby_set3 < hobby_set2)
    print(hobby_set3.issubset(hobby_set))
    False
    False
    True

    需要掌握

    # add
    s = {1,3,6}
    print(s.add(4))
    print(s)
    s.add('haha')
    print(s)
    None
    {1, 3, 4, 6}
    {1, 3, 4, 6, 'haha'}

     

    # remove
    s = {1,3,6}
    s.remove(6)
    print(s)
    # s.remove(9)   报错
    # print(s)
    {1, 3}

     

    # difference_update
    s = {1,3,6,9,4}
    s2 ={1,3,6,5,8}
    print(s.difference_update(s2))
    print(s)
    print(s2)
    None
    {4, 9}
    {1, 3, 5, 6, 8}

     

    # discard
    s = {1,3,6,5,8,2}
    print(s.discard(3))
    print(s.discard(700)) #不会报错
    print(s)
    None
    None
    {1, 2, 5, 6, 8}

     

    # isdisjoint  集合没有共同的部分返回True,否则返回False
    s = {1,3,6,9,4}
    s2 ={1,3,6,5,8}
    s3 = {7}
    print(s.isdisjoint(s2))
    print(s.isdisjoint(s3))
    False
    True

    存一个值or多个值 : 多个值

    有序 or 无序 :无序

    可变 or 不可变 :可变

    s = {1,2}
    print(s)
    print(id(s))
    s.add(3)
    print(s)
    print(id(s))
    {1, 2}
    2375254726696
    {1, 2, 3}
    2375254726696

    总结

    存值个数区分(掌握)

    |存值个数|数据类型| |:-:|:-:| |一个值:|整型、浮点型、字符串 |多个值:|列表、字典、元组、集合

    按可变不可变区分(掌握)

    |可变or不可变|数据类型| |:-:|:-:| |可变:|列表、字典、集合 |不可变:|整型、浮点型、字符串

    有序无序区分(掌握)

    |有序or无序|数据类型| |:-:|:-:| |有序:|列表、元组、字符串 |无序:|字典、集合

    浅拷贝和深拷贝

    拷贝

    内置方法

    lis = [1,3,6,[4,5]]
    lis2 = lis.copy()
    print(lis)
    print(lis2)
    lis.append(7)
    print(lis)
    print(lis2)
    lis[3][0] = 9
    print(lis)
    print(lis2)
    [1, 3, 6, [4, 5]]
    [1, 3, 6, [4, 5]]
    [1, 3, 6, [4, 5], 7]
    [1, 3, 6, [4, 5]]
    [1, 3, 6, [9, 5], 7]
    [1, 3, 6, [9, 5]]

    浅拷贝

    import copy
    lis = [1,3,6,[4,5]]
    lis2 = copy.copy(lis)
    print(lis)
    print(lis2)
    lis.append(7)
    print(lis)
    print(lis2)
    lis[3][0] = 9
    print(lis)
    print(lis2)
    [1, 3, 6, [4, 5]]
    [1, 3, 6, [4, 5]]
    [1, 3, 6, [4, 5], 7]
    [1, 3, 6, [4, 5]]
    [1, 3, 6, [9, 5], 7]
    [1, 3, 6, [9, 5]]

    深拷贝

    import copy
    lis = [1,3,6,[4,5]]
    lis2 = copy.deepcopy(lis)
    print(lis)
    print(lis2)
    lis.append(7)
    print(lis)
    print(lis2)
    lis[3][0] = 9
    print(lis)
    print(lis2)
    [1, 3, 6, [4, 5]]
    [1, 3, 6, [4, 5]]
    [1, 3, 6, [4, 5], 7]
    [1, 3, 6, [4, 5]]
    [1, 3, 6, [9, 5], 7]
    [1, 3, 6, [4, 5]]

    特殊的

    import copy

    t1 = (1,2,3,4,5)
    print(id(t1))
    t2 = copy.deepcopy(t1)
    print(id(t2))
    2375254489752
    2375254489752

     

    import copy

    t1 = (1,2,3,4,[1,2])
    print(id(t1))
    t2 = copy.deepcopy(t1)
    print(id(t2))
    2375254490104
    2375254276144

     

    lis = [1,2,3]
    t1 = (1,2,lis)
    print(t1)
    lis.append(4)
    print(lis)
    print(t1)
    (1, 2, [1, 2, 3])
    [1, 2, 3, 4]
    (1, 2, [1, 2, 3, 4])

     

  • 相关阅读:
    Mysql语句练习
    Mysql-------查询各科成绩前三名的记录
    Mysql--查询"01"课程比"02"课程成绩高的学生的信息及课程分数
    模态框拖拽案例分析--元素偏移量 offset 系列
    CSS中z-index的属性与使用
    《将博客搬至CSDN》
    CSS中Position几种属性的总结
    考研数学一
    ubuntu16.04安装mysql报错解决
    LoRaWAN 规范1.0 (章节10~13)
  • 原文地址:https://www.cnblogs.com/zrx19960128/p/10842361.html
Copyright © 2020-2023  润新知