跟老齊學Python之集合的關係

2022-10-04 23:48:23 字數 2691 閱讀 7839

凍結的集合

前面一節講述了集合的基本概念,注意,那裡所涉及到的集合都是可原處修改的集合。還有一種集合,不能在原處修改。這種集合的建立方法是:

>>> f_set = frozenset("qiwsir") #看這個名字就知道了frozen,凍結的set

>>> f_set

frozenset(['q', 'i', 's', 'r', 'w'])

>>> f_set.add("python") #報錯

traceback (most recent call last):

file "", line 1, in

attributeerror: 'frozenset' object has no attribute 'add'

>>> a_set = set("github") #對比看一看,這是乙個可以原處修改的set

>>> a_set

set(['b', 'g', 'i', 'h', 'u', 't'])

>>> a_set.add("python")

>>> a_set

set(['b', 'g', 'i', 'h', 'python', 'u', 't'])

集合運算

先複習一下中學數學(準確說是高中數學中的一點知識)中關於集合的一點知識,主要是喚起那痛苦而青澀美麗的回憶吧,至少對我是。

元素與集合的關係

元素是否屬於某個集合。

>>> aset

set(['h', 'o', 'n', 'p', 't', 'y'])

>>> "a" in aset

false

>>> "h" in aset

true

集www.cppcns.com合與集合的糾結

假設兩個集合a、b

a是否等於b,即兩個集合的元素完全一樣

在互動模式下實驗

>>> a

set(['q', 'i', 's', 'r', 'w'])

>>> b

set(['a', 'q'程式設計客棧, 'i', 'l', 'o'])

>>> a == b

false

>>> a != b

true

a是否是b的子集,或者反過來,b是否是a的超集。即a的元素也都是b的元素,但是b的元素比a的元素數量多。

實驗一下

>>> a

set(['q', 'i', 's', 'r', 'w'])

>>> c

set(['q', 'i'])

>>> c>> c.issubset(a) #或者用這種方法,判斷c是否是a的子集

true

>>> a.issuperset(c) #判斷a是否是c的超集

true

>>> b

set(['a', 'q', 'i', 'l', 'o'])

>>> a>> a.issubset(b) #或者這樣做

false

a、b的並集,即a、b所有元素,如下圖所示

>>> a

set(['q', 'i', 's', 'r', 'w'])

>>> b

set(['a', 'q', 'i', 'l', 'o'])

>>> a | b #可以有兩種方式,結果一樣

set(['a', 'i', 'l', 'o', 'q', 's', 'r', 'w'])

&g程式設計客棧t;>> a.union(b)

set(['a', 'i', 'l', 'o', 'q', 's', 'r', 'w'])

a、b的交集,即a、b所公有的元素,如下圖所示

>>> a

set(['q', 'i', 's', 'r', 'w'])

>>> b

set(['a', 'q', 'i', 'l', 'o'])

>>> a & b #兩種方式,等價

set(['q', 'i'])

>>> a.intersection(b)

s程式設計客棧et(['q', 'i'])

我在實驗的時候,順手敲了下面的**,出現的結果如下,看官能解釋一下嗎?(思考題)

>>> a and b

set(['a', 'q', 'i', 'l', 'o'])

a相對b的差(補),即a相對b不同的部分元素,如下圖所示

>>&程式設計客棧gt; a

set(['q', 'i', 's', 'r', 'w'])

>>> b

set(['a', 'q', 'i', 'l', 'o'])

>>> a - b

set(['s', 'r', 'w'])

>>> a.difference(b)

set(['s', 'r', 'w'])

-a、b的對稱差集,如下圖所示

>>> a

set(['q', 'i', 's', 'r', 'w'])

>>> b

set(['a', 'q', 'i', 'l', 'o'])

>>> a.symmetric_difference(b)

set(['a', 'l', 'o', 's', 'r', 'w'])

以上是集合的基本運算。在程式設計中,如果用到,可以用前面說的方法查詢。不用死記硬背。

本文標題: 跟老齊學python之集合的關係

本文位址:

跟老齊學Python之Python安裝

任何高階語言都是需要乙個自己的程式設計環境的,這就好比寫字一樣,需要有紙和筆,在計算機上寫東西,也需要有文字處理軟體,比如各種名稱的office。筆和紙以及office軟體,就是寫東西的硬體或軟體,總之,那些文字只能寫在那個上邊,才能最後成為一篇文章。那麼程式設計也是,要有個什麼程式之類的東西,要把...

跟老齊學Python之重回函式

函式的基本結構 python中的函式基本結構 複製 如下 def 函式名 引數列表 語句幾點說明 函式名的命名規則要符合python中的命名要求。一般用小寫字母和單下劃線 數字等組合 def是函式的開始,這個簡寫來自英文單詞define,顯然,就是要定義乙個什麼東西 函式名後面是圓括號,括號裡面,可...

跟老齊學Python之複習if語句

基本語句結構 複製 如下 if 判斷條件1 執行語句1 elif 判斷條件2 執行語句2 elif 判斷條件3 執行語句3 else 執行語句4 只有當 判斷條件 的值是true的時候,才執行下面的執行語句。那麼,在python中,怎麼知道乙個判斷條件是不是真呢?這個問題我們在眼花繚亂的運算子中已經...