Python3數(shù)據(jù)類型-集合-05

5.1 什么是集合(set)?

集合(set)是一個無序的不重復(fù)元素序列。

5.2 集合的創(chuàng)建

  • 定義一個集合,將元素用{}擴(kuò)起來。

example_set = {'basketball', 'volleyball', 'football'}

輸出結(jié)果如下:

{'volleyball', 'football', 'basketball'}

  • 利用set()命令來創(chuàng)建集合

example_set = set('asdfghjkl')

輸出結(jié)果如下:

{'l', 's', 'g', 'k', 'd', 'f', 'a', 'j', 'h'}

從上面的定義中我們可以看出,定義好的集合輸出后元素都進(jìn)行了重新排列。這也正是體現(xiàn)了集合無序的特征。

5.3 集合的基本操作

5.3.1 集合元素的去重

從定義上可以看出,集合(set)是一種無序不重復(fù)的序列,那么我們在定義一個集合的過程中,如果該集合中重復(fù)出現(xiàn)了某個或者某些元素,該集合在輸出的時候,將只保留一個該元素,而會將多余重復(fù)的元素刪除。

例如:

example_set3 = {'basketball', 'volleyball', 'football', 'baseball', 'volleyball'}
print(example_set3)

輸出結(jié)果為:

{'basketball', 'football', 'baseball', 'volleyball'}

5.3.2 集合基本運(yùn)算

通過下面這個例子來說明一下集合的元素間的基本運(yùn)算:

set_a = set('abhduagejqedgd')
set_b = set('dihengahe')
print(set_a - set_b)
print(set_a | set_b)
print(set_a & set_b)
print(set_a ^ set_b)

輸出結(jié)果如下:

{'j', 'u', 'q', 'b'}
{'b', 'h', 'a', 'u', 'q', 'd', 'n', 'i', 'g', 'j', 'e'}
{'h', 'a', 'd', 'g', 'e'}
{'b', 'u', 'q', 'n', 'i', 'j'}

set_a - set_b:集合set_a中包含而集合set_b中不包含,換句話說就是集合set_a減去與set_b中重復(fù)的元素,剩余的元素,需要注意的是,如果集合set_b中有set_a中沒有的元素,這個相減的結(jié)果是不包括這些元素的。

set_a | set_b:集合set_a和集合set_b中包含的所有元素,相當(dāng)于兩個集合的并集。

set_a & set_b:集合set_a和集合set_b中共同包含的元素,相當(dāng)于兩個集合的交集。

set_a ^ set_b: 集合set_a和集合set_b中不同時包含的元素,可以理解為并集減去交集剩余的部分。

5.3.3 向集合中添加元素

向集合中添加元素有兩種方法,一種是set.add(object),一種是set.update()。

區(qū)別是,前者是將單個元素添加到集合中,如果集合中本身存在這個元素,則根據(jù)不重復(fù)原則,將不改變已有內(nèi)容;后者向集合中添加元素不限于單個元素,也可以是列表、元組、字典等。

5.3.4 從集合中刪除元素

從集合中刪除元素共有三種方法:

set.remove(object)

set.dicard(object)

set.pop()

前兩種都是對集合中指定元素的刪除,如果元素存在于集合中,效果是一樣的。如果要刪除的元素不存在于集合中,remove方法就會報錯,而discard方法則不會報錯。

pop方法則是隨機(jī)刪除集合中的一個元素。

增加和刪除元素參考以下例題:

example_set1.add('tennis')
example_set2.update( [2, 4, 6], {'name': 'Lily', 'number': 12, 'score': 88})
print(example_set1)
print(example_set2)

set_a.remove('d')
set_b.discard('e')
example_set3.pop()
print(set_a)
print(set_b)
print(example_set3)

輸出結(jié)果如下:

{'volleyball', 'basketball', 'football', 'tennis'}
{'score', 2, 'f', 4, 'a', 6, 'd', 'g', 'l', 'number', 's', 'name', 'h', 'j', 'k'}
{'b', 'u', 'a', 'q', 'g', 'h', 'j', 'e'}
{'i', 'a', 'd', 'g', 'n', 'h'}
{'basketball', 'football', 'baseball'}

需要注意的一點(diǎn)是,通過測試發(fā)現(xiàn),利用update方法往集合中增加元素的時候,整數(shù)或者整型是不被允許的,會報錯。此外,字典雖然可以被添加,但是只是把鍵添加進(jìn)去了,而值則被忽略掉了。

5.3.5 其他

len(set):計算集合的元素個數(shù)

set.clear():情況集合

object in set:判斷元素object是否在集合set中,如果是,返回True,如果不是,返回False。

5.4 集合的一些內(nèi)置函數(shù)

前面已經(jīng)提到了一部分,諸如set.add(object),set.update(),set_remove(object),set.discard(object)等等。其余的一些內(nèi)置函數(shù)在具體使用的過程中再慢慢探索和體會。

5.5 小結(jié)

這一小節(jié)主要學(xué)習(xí)了集合(set)這種數(shù)據(jù)類型的基本概念和使用方法,對于這種無序不重復(fù)的數(shù)據(jù)類型具體怎樣使用還需要進(jìn)一步學(xué)習(xí)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容