• python学习笔记(十五)之集合


    集合:对应数学中的集合类型。集合中的元素是唯一,且无序的。

    创建集合

      方法一:使用{},注意python会自动删除重复元素

    >>> number = {1,2,3,4,3,2,1}
    >>> number
    {1, 2, 3, 4}

      方法二:使用set()工厂函数,传递一个列表,元组或字符串

    >>> temp = set([1,2,3,2,1])
    >>> temp
    {1, 2, 3}
    >>> temp = set((1,2,3,2,1))
    >>> temp
    {1, 2, 3}
    >>> temp = set("Hello Python")
    >>> temp
    {'n', 'P', ' ', 'H', 'l', 'y', 't', 'o', 'h', 'e'}

    访问集合元素

      方法一:使用for把集合中元素一个一个读出来

    >>> temp
    {'n', 'P', ' ', 'H', 'l', 'y', 't', 'o', 'h', 'e'}
    >>> for i in temp:
    ...     print(i, end = ' ')
    ... 
    n P   H l y t o h e >>> 

      方法二:使用in和not in来判断一个元素是否在集合中

    >>> temp
    {'n', 'P', ' ', 'H', 'l', 'y', 't', 'o', 'h', 'e'}
    >>> 'n' in temp
    True
    >>> 'N' in temp
    False

    添加元素:使用add()方法

    >>> temp
    {'n', 'P', ' ', 'H', 'l', 'y', 't', 'o', 'h', 'e'}
    >>> temp.add(1)
    >>> temp.add(2)
    >>> temp
    {'n', 'P', 1, 2, ' ', 'H', 'l', 'y', 't', 'o', 'h', 'e'}

    删除元素:使用remove()方法

    >>> temp
    {'n', 'P', 1, 2, ' ', 'H', 'l', 'y', 't', 'o', 'h', 'e'}
    >>> temp.remove(1)
    >>> temp
    {'n', 'P', 2, ' ', 'H', 'l', 'y', 't', 'o', 'h', 'e'}
    >>> temp.remove('H')
    >>> temp
    {'n', 'P', 2, ' ', 'l', 'y', 't', 'o', 'h', 'e'}

    当需要定义一个不可变的集合时,可以使用frozeset

    >>> num = frozenset(range(10))
    >>> num
    frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
    >>> num.remove(0)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'frozenset' object has no attribute 'remove'

    集合运算  

      子集

      子集,为某个集合中一部分的集合,故亦称部分集合。

      使用操作符 < 执行子集操作,同样地,也可使用方法 issubset() 完成。

    >>> a = set("Hello")
    >>> b = set("Hello python")
    >>> a < b
    True
    >>> a.issubset(b)
    True

      并集

    一组集合的并集是这些集合的所有元素构成的集合,而不包含其他元素。

    使用操作符 | 执行并集操作,同样地,也可使用方法 union() 完成。

    >>> a
    {'l', 'o', 'e', 'H'}
    >>> b
    {'n', ' ', 'H', 'l', 'y', 't', 'o', 'p', 'h', 'e'}
    >>> a | b
    {'n', ' ', 'H', 'l', 'y', 't', 'o', 'p', 'h', 'e'}
    >>> a.union(b)
    {'n', ' ', 'H', 'l', 'y', 't', 'o', 'p', 'h', 'e'}

    交集

    两个集合 A 和 B 的交集是含有所有既属于 A 又属于 B 的元素,而没有其他元素的集合。

    使用 & 操作符执行交集操作,同样地,也可使用方法 intersection() 完成。

    >>> a
    {'l', 'o', 'e', 'H'}
    >>> b
    {'n', ' ', 'H', 'l', 'y', 't', 'o', 'p', 'h', 'e'}
    >>> a & b
    {'l', 'o', 'e', 'H'}
    >>> a.intersection(b)
    {'l', 'o', 'e', 'H'}

    差集

    A 与 B 的差集是所有属于 A 且不属于 B 的元素构成的集合

    使用操作符 - 执行差集操作,同样地,也可使用方法 difference() 完成。

    >>> a
    {'l', 'o', 'e', 'H'}
    >>> b
    {'n', ' ', 'H', 'l', 'y', 't', 'o', 'p', 'h', 'e'}
    >>> b - a
    {'n', ' ', 'y', 't', 'h', 'p'}
    >>> b.difference(a)
    {'n', ' ', 'y', 't', 'h', 'p'}

    集合的一些方法

    方法描述
    add() 将元素添加到集合中
    clear() 删除集合中的所有元素
    copy() 返回集合的浅拷贝
    difference() 将两个或多个集合的差集作为一个新集合返回
    difference_update() 从这个集合中删除另一个集合的所有元素
    discard() 删除集合中的一个元素(如果元素不存在,则不执行任何操作)
    intersection() 将两个集合的交集作为一个新集合返回
    intersection_update() 用自己和另一个的交集来更新这个集合
    isdisjoint() 如果两个集合有一个空交集,返回 True
    issubset() 如果另一个集合包含这个集合,返回 True
    issuperset() 如果这个集合包含另一个集合,返回 True
    pop() 删除并返回任意的集合元素(如果集合为空,会引发 KeyError)
    remove() 删除集合中的一个元素(如果元素不存在,会引发 KeyError)
    symmetric_difference() 将两个集合的对称差作为一个新集合返回
    symmetric_difference_update() 用自己和另一个的对称差来更新这个集合
    union() 将集合的并集作为一个新集合返回
    update() 用自己和另一个的并集来更新这个集合
  • 相关阅读:
    HashMap的实现原理
    LinkedHashMap的实现讲解
    ConcurrentHashMap原理分析
    javax.mail Java Extension(扩展)
    Singleton 单例模式
    Java序列化与反序列化(实践)
    Java IO操作
    Java NIO与IO的区别和比较
    java模拟异步消息的发送与回调
    java如何实现多个线程并发运行
  • 原文地址:https://www.cnblogs.com/ZGreMount/p/7764340.html
Copyright © 2020-2023  润新知