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)   # 刪除一個不存在的值, 也不返回任何值

修改

集合不能修改單個元素

查找

集合不能通過索引訪問。
集合沒有訪問單個元素的方法。

集合不是線性結構, 集合元素沒有順序

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章