Python成為專業人士筆記 Set集合操作剖析

2021-10-06 07:21:27 字數 2411 閱讀 2013

創帆雲:python成為專業人士筆記--強烈建議收藏!每日持續更新!與另乙個集合互相操作

#intersection  交集

.intersection()

或 &

#輸出:

#union 合併

.union()

| #輸出:

#difference 集合相減

.difference()

- #輸出:

#symmetric_difference 對稱差集(即某值單獨只在乙個集合**現)

.symmetric_difference()

^ #輸出:

#超集檢查 如果集合1包含了集合2,返回true,否則返回false

.issuperset()

>=

#返回false

#子集檢查 同上

.issubset()

<=

#輸出:true

#不相交集 如果兩個集合完全沒有相同的值,返回true

.isdisjoint()

#輸出:true

.isdisjoint()

#輸出:false

與另外乙個變數互相操作

#是否存在檢查  如果存在返回true

2 in

#輸出:true

4 in

#輸出:false

4 not in

#輸出:true

對自己進行操作:

#增加和刪除集合元素

s =

s.add(4)

#s的值

s.discard(3)

#s 的值

s.discard(5)

#s 的值未發生變化 ,因為沒有元素為'5'的值

s.remove(2)

#s 的值為

#值為'2'的元素被刪除

s.remove(2)

#由於這時集合裡已沒有元素'2'了,所以會報keyerror!

#補充:discard和remove都是刪除元素,區別是discard刪除乙個集合中不存在的值不會報錯,而remove會直接報錯

s.update()

#s 的值為,因為之前的值1和4已與update的值合併,且不能有重複值

我的第一想法:

s=, }

#typeerror: unhashable type: 'set'

#居然報錯了!難道集合中不能儲存集合嗎?

在這種情況下,應該要用不可變集合資料型別:

), frozenset()}

這裡要注意:

如果s= 建立了乙個只有乙個元素的集合

但是如果是s={},則會建立乙個空的字典dict,而不是集合set!

因為這兩個資料型別的符號是一樣的!

如果要建立乙個空集合,正確方法是set()

集合是不同元素的無序集合,但有時我們希望處理某些有重複資料的集合(即重數集合),並統計元素的重複程度,如何做?

考慮以下例子 :

seta = 

print(seta)

#輸出 ,會把相同的值排除掉

#同時你會發現,多次重複執行時,列印出來的集合元素的順序可能是不一樣的,因為集合本身不會額外排序

通過將字串「a」、「b」、「b」、「c」儲存到乙個集合資料結構中,我們丟失了關於「b」出現兩次的資訊,這時,如果希望元素保留這些重複元素的資訊,用資料結構列表list可以做到:

lista = ['a','b','b','c']

#列表將按原始順序顯示,並且不刪除重複資料『b』

但是列表資料結構引入了額外的不必要的排序,這會降低我們的計算速度

這看起來是個兩難的問題,怎麼辦呢?

為了實現重數集合的元素統計,python提供了集合模組中的counter類(從2.7版開始) :

from collections import counter

countera = counter(['a','b','b','c'])

print(countera)

print(type(countera))

#輸出:

值:counter()

資料型別:

counter是乙個字典,其中元素儲存為字典鍵,它們的計數儲存為字典值。

而字典本身就是乙個無序的集合,所以這個資料結構沒有不必要的排序消耗,很好的解決了上面的問題

Python成為專業人士筆記 Sqlite3 模組

創帆雲 python成為專業人士筆記 強烈建議收藏!每日持續更新!sqlite3模組是由gerhard haring編寫的。要使用此模組,必須首先建立表示資料庫的連線物件。這裡的資料將儲存在example.db檔案中 import sqlite3 conn sqlite3.connect examp...

Python成為專業人士筆記 位操作符

創帆雲 python成為專業人士筆記 強烈建議收藏!每日持續更新!按位操作符直接操作二進位制的字串,這些是最基本的操作,並直接由 處理器所支援。在處理裝置驅動程式 圖形底層 加密和網路通訊時,這些位操作是必需的。本文提供一些有用的知識和對應python的按位運算子示例 運算子將翻轉數字中的所有位,由...

Python成為專業人士筆記 自定義鍊錶

創帆雲 python成為專業人士筆記 強烈建議收藏!每日持續更新!鍊錶是節點的集合,每個節點由乙個索引和乙個值組成,索引將所有節點串成了乙個序列。自定義鍊錶可用於實現更為複雜的資料結構,如列表 堆疊 佇列和關聯陣列等。本例使用與內建list物件相同的許多方法實現了乙個鍊錶 元素節點處理類 class...