zoukankan      html  css  js  c++  java
  • 集合

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

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

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

    一、集合的创建。

    set1 = {'1','alex',2,True,2,'alex'}
    print(set1)

    输出:

    {'alex', 2, True, '1'}

    创建:

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

    输出:

    {1, 2, 3} {1, 2, 'barry'}

    错误创建:

    set1 = {'1','alex',2,True,[1,2,3]} # 报错,元素有列表类型
    set2 = {'1','alex',2,True,{1:2}}  # 报错,元素有字典类型
    set3 = {'1','alex',2,True,(1,2,[2,3,4])}  # 报错,元素有列表类型

    二、集合的应用(去重)

      将列表内的元素去重:

    l = [1,1,2,2,3,4,5,5]
    set1 = set(l)
    print(set1)
    l1 = list(set1)
    print(l1)

    输出:

    {1, 2, 3, 4, 5}
    [1, 2, 3, 4, 5]

    集合的增:

    第一种方法:(.add(新的内容))

    set1 = {'alex','wusir','ritian','egon','barry'}
    set1.add("景女神")
    print(set1)

    输出:

    {'barry', 'alex', 'ritian', 'egon', '景女神', 'wusir'}

    第二种方法:(update:迭代着增加)

    set1 = {'alex','wusir','ritian','egon','barry'}
    set1.update('A')
    print(set1)

    输出:

    {'alex', 'A', 'barry', 'wusir', 'ritian', 'egon'}
    set1 = {'alex','wusir','ritian','egon','barry'}
    set1.update('老师')
    print(set1)

    输出:

    {'alex', 'barry', '', 'egon', '', 'wusir', 'ritian'}
    set1 = {'alex','wusir','ritian','egon','barry'}
    set1.update([1,2,3])
    print(set1)

    输出:

    {1, 2, 'egon', 3, 'alex', 'barry', 'wusir', 'ritian'}

    集合的删:

    set1 = {'alex','wusir','ritian','egon','barry'}
    
    set1.remove('alex')  # 删除一个元素
    print(set1)
    
    set1.pop()  # 随机删除一个元素
    print(set1)
    
    set1.clear()  # 清空集合
    print(set1)
    
    del set1  # 删除集合
    print(set1)

    集合的其他操作:
    交集。(&  或者 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'>
  • 相关阅读:
    HDU 5791 Two (DP)
    POJ 1088 滑雪 (DPor记忆化搜索)
    LightOJ 1011
    POJ 1787 Charlie's Change (多重背包 带结果组成)
    HDU 5550 Game Rooms (ccpc2015 K)(dp)
    HDU 5542 The Battle of Chibi (ccpc 南阳 C)(DP 树状数组 离散化)
    HDU 5543 Pick The Sticks (01背包)
    HDU 5546 Ancient Go (ccpc2015南阳G)
    NB-IoT的DRX、eDRX、PSM三个模式 (转载,描述的简单易懂)
    MQTT 嵌入式端通讯协议解析(转)
  • 原文地址:https://www.cnblogs.com/biluo/p/7745204.html
Copyright © 2011-2022 走看看