zoukankan      html  css  js  c++  java
  • set集合和深浅拷贝


    1.补存基础数据类型的相关知识点
    1.str.join()把列表变成字符串
    2.列表不能在循环的时候删除,因为索引会跟着改变
    3.字典也不能直接循环删除
    把要删除的内容记录在列表中,循环列表,删除愿列表,字典中的数据
    4.fromkeys()不会对原来的字典产生影响,产生新字典(神坑)
    5.set集合.不重复,无序
    注意: set集合中的元素必须是可hash的, 但是set本身是不可hash得. set是可变的.
    增加:update() add()
    set1 = {'alex','wusir','ritian','egon','barry'}
    set1.add('景女神')
    print(set1)
    
    #update:迭代着增加
    set1.update('A')
    print(set1)
    set1.update('老师')
    print(set1)
    set1.update([1,2,3])
    print(set1)
       
    删除:pop() remove() clear()
    set1 = {'alex','wusir','ritian','egon','barry'}
    
    set1.remove('alex')  # 删除一个元素
    print(set1)
    
    set1.pop()  # 随机删除一个元素
    print(set1)
    
    set1.clear()  # 清空集合
    print(set1)
    
    del set1  # 删除集合
    print(set1)
    修改:没有索引无法直接修改,采用先删除后添加方式修改
    查询:set是一个可迭代对象. 所以可以进行for循环查询

    集合的其他操作:
    交集。(&  或者 intersection)
    set1 = {1,2,3,4,5}
    set2 = {4,5,6,7,8}
    print(set1 & set2)  # {4, 5}
    print(set1.intersection(set2))  # {4, 5}

    并集。(| 或者 union)

    set1 = {1,2,3,4,5}
    set2 = {4,5,6,7,8}
    print(set1 | set2)  # {1, 2, 3, 4, 5, 6, 7}
    print(set2.union(set1))  # {1, 2, 3, 4, 5, 6, 7}

    差集。(- 或者 difference)

    set1 = {1,2,3,4,5}
    set2 = {4,5,6,7,8}
    print(set1 - set2)  # {1, 2, 3}
    print(set1.difference(set2))  # {1, 2, 3}

    反交集。 (^ 或者 symmetric_difference)

    set1 = {1,2,3,4,5}
    set2 = {4,5,6,7,8}
    print(set1 ^ set2)  # {1, 2, 3, 6, 7, 8}
    print(set1.symmetric_difference(set2))  # {1, 2, 3, 6, 7, 8}

    子集与超集

    set1 = {1,2,3}
    set2 = {1,2,3,4,5,6}
    
    print(set1 < set2)
    print(set1.issubset(set2))  # 这两个相同,都是说明set1是set2子集。
    
    print(set2 > set1)
    print(set2.issuperset(set1))  # 这两个相同,都是说明set2是set1超集。

    frozenset不可变集合,让集合变成不可变类型。

    s = frozenset('barry')
    print(s,type(s))  # frozenset({'a', 'y', 'b', 'r'}) <class 'frozenset'>
        6.想转换成什么,就用什么括起来
    类型转换:
    元组 => 列表 list(tuple)
    列表 => 元组 tuple(list)
    list=>str str.join(list)
    str=>list str.split()
    7.深浅拷贝
    1.直接赋值,两个变量指向同一个对象
    2.浅拷贝:只拷贝第一层内容. copy()  
          对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性。

    3.深度拷贝:对象中的所有内容全部拷贝一份
          对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变。

    import copy
    copy.deepcopy()
  • 相关阅读:
    HDU 2196 Computer
    HDU 1520 Anniversary party
    POJ 1217 FOUR QUARTERS
    POJ 2184 Cow Exhibition
    HDU 2639 Bone Collector II
    POJ 3181 Dollar Dayz
    POJ 1787 Charlie's Change
    POJ 2063 Investment
    HDU 1114 Piggy-Bank
    Lca hdu 2874 Connections between cities
  • 原文地址:https://www.cnblogs.com/hmw112626/p/9289635.html
Copyright © 2011-2022 走看看