07-02集合

集合set

集合是数学意义上的集合

特征:没有重复元素

集合对象操作

定义集合

方法1:s = set()
方法2:s = {1, 2, 3}
方法3:s = set(range(3)) # 初始化一个可迭代对象

删除集合

需要使用del方法删除
截至2020年5月23日,本人暂时还未发现其他的方法

集合元素的操作

增加

  • s.add(value)方法
  • s.update(可迭代对象)附加一个可迭代对象
  • 增加元素都是原地修改返回None
  • 集合的特性就是没有重复元素,所以是不会新增重复的元素的
In [45]: s = {0, 1, 2}

In [46]: s.add(3)    # 和列表类似, 增加单个元素, 原地修改

In [47]: s
Out[47]: {0, 1, 2, 3}

In [48]: s.add(3)    # 增加已存在的元素, 什么也不做

In [49]: s
Out[49]: {0, 1, 2, 3}

In [50]: s.update(range(4, 7))   # 和列表类似, 附加一个可迭代对象, 原地修改

In [51]: s
Out[51]: {0, 1, 2, 3, 4, 5, 6}

In [52]: s.update(range(4, 7))   # 对于已经存在的元素, 什么也不做

In [53]: s
Out[53]: {0, 1, 2, 3, 4, 5, 6}

update的实现
    In [54]: for e in itrator:
        ...:     s.add(e)

删除

  • remove:删除给定的元素, 元素不存在, 抛出KeyError
  • discard:删除给定的元素, 元素不存在, 什么也不做
  • pop:随机删除一个元素并返回, 集合为空, 抛出KeyError。在集合中无法根据索引删除(不是线性结构)
  • clear:清空集合
In [55]: s.remove(0)   # 删除已经存在的值

In [56]: s
Out[56]: {1, 2, 3, 4, 5, 6}

In [57]: s.remove(10)   # 删除不存在的值, 抛出KeyError
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-57-99f2b84d3df8> in <module>()
----> 1 s.remove(10)

KeyError: 10

In [58]: s.pop()   # 删除并返回删除的元素
Out[58]: 1

In [59]: s
Out[59]: {2, 3, 4, 5, 6}

In [60]: s.clear()   # 清空

In [61]: s.pop()    # 当集合为空时, 抛出KeyError
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-61-e76f41daca5e> in <module>()
----> 1 s.pop()

KeyError: 'pop from an empty set'

In [62]: s = set(range(10))

In [63]: s
Out[63]: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

In [64]: s.discard(3)   # 删除一个已经存在的值, 删除并不返回

In [65]: s
Out[65]: {0, 1, 2, 4, 5, 6, 7, 8, 9}  

In [66]: s.discard(10)   # 删除一个不存在的值, 也不返回任何值

修改

集合不能修改单个元素

查找

集合不能通过索引访问。
集合没有访问单个元素的方法。

集合不是线性结构, 集合元素没有顺序

原文地址:https://www.cnblogs.com/cishi/p/13023173.html