zoukankan      html  css  js  c++  java
  • Python-集合

    集合中的元素必须可hash

    集合具有去重性,一个集合中没有两个相同的元素

    集合是无序的(集合中的元素没有先后之分),如集合{1,2,3}和{3,2,1}是同一个集合

     定义一个集合

    >>> num = {1,2,4,3,7,5}
    >>> num
    {1, 2, 3, 4, 5, 7}
    >>> num1 = set([2,4,6,1,2,9,8])
    >>> num1
    {1, 2, 4, 6, 8, 9}
    

     集合添加元素

    >>> num
    {1, 2, 3, 4, 5, 7}
    >>> num.add(9)  # 添加元素,一次只能添加一个
    >>> num
    {1, 2, 3, 4, 5, 7, 9}
    >>> num1
    {1, 2, 4, 6, 8, 9}
    >>> num.update(num1)  # 把num1集合中的所有元素添加到num集合中
    >>> num
    {1, 2, 3, 4, 5, 6, 7, 8, 9}
    >>> num.update([10,11,12,13])
    >>> num
    {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}  # 使用update方法添加多个元素
    

     集合的删除方法

    >>> num
    {1, 2, 3, 4, 5, 7, 9}
    >>> num.pop()  # 随机删除集合中的一个元素
    1
    >>> num.pop()
    2
    >>> num
    {3, 4, 5, 7, 9}
    >>> num.remove(7)  # 指定删除集合中的元素
    >>> num
    {3, 4, 5, 9}
    >>> num.remove(7)  # 如果集合中没有这个元素就会报错
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    KeyError: 7
    >>> num
    {3, 4, 5, 9}
    >>> num.discard(4)  # 指定删除集合中的元素
    >>> num
    {3, 5, 9}
    >>> num.discard(4)  # 如果集合中没有这个元素,不会报错
    >>> num
    {3, 5, 9}
    >>> num.clear()  # 清空集合中的元素
    >>> num
    set()
    

     集合的复制

    >>> num = {1,2,4,3,7,5}
    >>> num1 = num  # 通过赋值来复制,如果原集合发生改变,复制的集合也会发生改变
    >>> num1
    {1, 2, 3, 4, 5, 7}
    >>> num.add(9)
    >>> num
    {1, 2, 3, 4, 5, 7, 9}
    >>> num1
    {1, 2, 3, 4, 5, 7, 9}
    
    >>> num = {1,2,4,3,7,5}
    >>> num1 = num.copy()  # 深度copy,原集合发生改变,复制的集合不会发生改变,两个集合变得没有关系了
    >>> num1
    {1, 2, 3, 4, 5, 7}
    >>> num.add(9)
    >>> num
    {1, 2, 3, 4, 5, 7, 9}
    >>> num1
    {1, 2, 3, 4, 5, 7}
    

     并集

    并集:两个集合所有元素的集合

    有两个方法,一个是用union()方法,一个是用“|”符号

    >>> num
    {1, 2, 3, 4, 5, 7}
    >>> num1
    {1, 2, 4, 6, 8, 9}
    >>> num.union(num1)
    {1, 2, 3, 4, 5, 6, 7, 8, 9}
    >>> num|num1
    {1, 2, 3, 4, 5, 6, 7, 8, 9}
    

     差集

    差集:在一个集合中但不在另一个集合中的元素

    有两个方法,一个是difference()方法,一个是“-”符号

    >>> num
    {1, 2, 3, 4, 5, 7}
    >>> num1
    {1, 2, 4, 6, 8, 9}
    >>> num.difference(num1)  # 在集合num中却不在集合num1中的元素
    {3, 5, 7}
    >>> num - num1  # 在集合num中却不在集合num1中的元素
    {3, 5, 7}
    >>> num1.difference(num)  # 在集合num1中却不在集合num中的元素
    {8, 9, 6}
    >>> num1 - num  # 在集合num1中却不在集合num中的元素
    {8, 9, 6}
    >>> num.difference_update(num1)  # 把在集合num中却不在集合num1中的元素赋给集合num
    >>> num
    {3, 5, 7}
    

     对称差集

    对称差集:两个集合中,只在一个集合和只在另一个集合里的元素

    有两个方法,一个是symmetric_difference()方法,一个是“^”符号

    >>> num
    {1, 2, 3, 4, 5, 7}
    >>> num1
    {1, 2, 4, 6, 8, 9}
    >>> num.symmetric_difference(num1)  # 只在集合num中和只在集合num1中的元素
    {3, 5, 6, 7, 8, 9}
    >>> num ^ num1  # 只在集合num中和只在集合num1中的元素
    {3, 5, 6, 7, 8, 9}
    >>> num.symmetric_difference_update(num1)  # 把只在集合num中和只在集合num1中的元素赋给集合num
    >>> num
    {3, 5, 6, 7, 8, 9}
    

    交集

    交集:在一个集合中,也在另一个集合中的元素

    有两个方法,一个是intersection()方法,一个是“&”符号

    >>> num
    {1, 2, 3, 4, 5, 7}
    >>> num1
    {1, 2, 4, 6, 8, 9}
    >>> num.intersection(num1)  # 集合num和集合num1的交集
    {1, 2, 4}
    >>> num & num1  # 集合num和集合num1的交集
    {1, 2, 4}
    >>> num.intersection_update(num1)  # 把集合num和集合num1的交集赋给集合num
    >>> num
    {1, 2, 4}
    

     集合关系的判断

     判断两个集合是否相等

    >>> num
    {1, 2, 3, 4, 5, 7}
    >>> num1
    {1, 2, 4, 6, 8, 9}
    >>> num == num1  # 判断集合num和集合num1是否相等
    False
    >>> num != num1  # 判断集合num和集合num1是否不相等
    True
    

     判断元素是否在集合中

    >>> num
    {1, 2, 3, 4, 5, 7}
    >>> 1 in num  # 判断元素1是否在集合num中
    True
    >>> 6 in num  # 判断元素6是否在集合num中
    False
    >>> 1 not in num  # 判断元素1是否不在集合num中
    False
    >>> 6 not in num  # 判断元素6是否不在集合num中
    True
    

     判断集合是否相交

    >>> num
    {1, 2, 3, 4, 5, 7}
    >>> num1
    {1, 2, 4, 6, 8, 9}
    >>> num2
    {8, 9}
    >>> num.isdisjoint(num1)  # 判断集合num和集合num1是否不相交
    False
    >>> num.isdisjoint(num2)  # 判断集合num和集合num2是否不相交
    True
    

     判断集合的包含关系

    >>> num
    {1, 2, 3, 4, 5, 7}
    >>> num1
    {1, 2, 3}
    >>> num.issuperset(num1)  # 判断集合num是否包含集合num1
    True
    >>> num >= num1  # 判断集合num是否包含集合num1
    True
    >>> num1.issubset(num)  # 判断集合num1是否被集合num包含
    True
    >>> num1 <= num  # 判断集合num1是否被集合num包含
    True
    
  • 相关阅读:
    Java Socket通信实现私聊、群聊
    一套简单的web即时通讯——第二版
    一套简单的web即时通讯——第一版
    前后端API交互数据加密——AES与RSA混合加密完整实例
    跨境电商ERP中的自动化 3.平台订单自动发货
    跨境电商ERP中的自动化 2.平台商品和本地单品自动绑定
    跨境电商ERP中的自动化 1.平台订单自动同步至本地
    小特工具箱3.0版发布 春节优惠价99元/套
    河南农信移动支付解析
    win10 chrome 百分浏览器 centbrowser 收藏夹栏字体突然变小
  • 原文地址:https://www.cnblogs.com/sch01ar/p/8544894.html
Copyright © 2011-2022 走看看