zoukankan      html  css  js  c++  java
  • python set(集合)

    集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。以下是集合最重要的两点:

      去重,把一个列表变成集合,就自动去重了。

      关系测试,测试两组数据之前的交集、差集、并集等关系。

    1.集合的创建

    set1 = set({1, 2, 'barry'})
    set2 = {1, 2, 'barry'}
    print(set1, set2)  # {1, 2, 'barry'} {1, 2, 'barry'}

    2.集合的增

      ① add

      ② upadte

    set1 = {'alex', 'zzl',  'barry'}
    
    # add
    set1.add('zhuge')
    print(set1)  # {'alex', 'zzl',  'barry', 'zhuge'}
    
    # update  迭代增加
    set1.update('zhuge')
    print(set1)  # {'e', 'zzl', 'alex', 'h', 'g', 'z', 'barry', 'u'}

    3.集合的删

      ① remove 删除指定元素,无该元素则报错

      ② pop 随机删除一个元素,有返回值

       ③ clear 清空

      ④ del 删除

    set1 = {'alex', 'zzl',  'barry'}
    
    # remove  删除指定元素,无该元素则报错
    set1.remove('zzl')
    print(set1)  # {'alex', 'barry'}
    
    # pop 随机删除一个元素,有返回值
    print(set1.pop())  # barry
    print(set1)        # {'alex', 'zzl'}
    
    # clear 清空
    set1.clear()
    print(set1)  # set()
    
    # del 删除
    del set1
    print(set1)  # 报错

    4.集合的其他操作

      4.1 交集。(&  或者 intersection)

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

      4.2 并集。(| 或者 union)

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

      4.3 差集。(- 或者 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}

      4.4反交集。 (^ 或者 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}

      4.5子集与超集

    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超集。

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

    s = frozenset('barry')
    print(s, type(s))  # frozenset({'a', 'y', 'b', 'r'}) <class 'frozenset'>

    面试题:

      有li = [1, 21, 22, 22, 1, 8, 21],请将li内重复的元素保留一个并输出新li1
    li = [1, 21, 22, 22, 1, 8, 21]
    li1 = list(set(li))
    print(li1)
    View Code
  • 相关阅读:
    poj 1579(动态规划初探之记忆化搜索)
    hdu 1133(卡特兰数变形)
    CodeForces 625A Guest From the Past
    CodeForces 625D Finals in arithmetic
    CDOJ 1268 Open the lightings
    HDU 4008 Parent and son
    HDU 4044 GeoDefense
    HDU 4169 UVALive 5741 Wealthy Family
    HDU 3452 Bonsai
    HDU 3586 Information Disturbing
  • 原文地址:https://www.cnblogs.com/zhuzl/p/11153807.html
Copyright © 2011-2022 走看看