5.1 什么是集合(set)鳄梅?
集合(set)是一個無序的不重復元素序列。
5.2 集合的創(chuàng)建
- 定義一個集合,將元素用
{}
擴起來慰丛。
example_set = {'basketball', 'volleyball', 'football'}
輸出結果如下:
{'volleyball', 'football', 'basketball'}
- 利用set()命令來創(chuàng)建集合
example_set = set('asdfghjkl')
輸出結果如下:
{'l', 's', 'g', 'k', 'd', 'f', 'a', 'j', 'h'}
從上面的定義中我們可以看出悲幅,定義好的集合輸出后元素都進行了重新排列套鹅。這也正是體現(xiàn)了集合無序的特征。
5.3 集合的基本操作
5.3.1 集合元素的去重
從定義上可以看出汰具,集合(set)是一種無序不重復的序列卓鹿,那么我們在定義一個集合的過程中,如果該集合中重復出現(xiàn)了某個或者某些元素留荔,該集合在輸出的時候吟孙,將只保留一個該元素,而會將多余重復的元素刪除聚蝶。
例如:
example_set3 = {'basketball', 'volleyball', 'football', 'baseball', 'volleyball'}
print(example_set3)
輸出結果為:
{'basketball', 'football', 'baseball', 'volleyball'}
5.3.2 集合基本運算
通過下面這個例子來說明一下集合的元素間的基本運算:
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)
輸出結果如下:
{'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
中重復的元素,剩余的元素碘勉,需要注意的是巷挥,如果集合set_b
中有set_a
中沒有的元素,這個相減的結果是不包括這些元素的恰聘。
set_a | set_b:
集合set_a
和集合set_b
中包含的所有元素句各,相當于兩個集合的并集。
set_a & set_b:
集合set_a
和集合set_b
中共同包含的元素晴叨,相當于兩個集合的交集凿宾。
set_a ^ set_b:
集合set_a
和集合set_b
中不同時包含的元素,可以理解為并集減去交集剩余的部分兼蕊。
5.3.3 向集合中添加元素
向集合中添加元素有兩種方法初厚,一種是set.add(object),一種是set.update()。
區(qū)別是产禾,前者是將單個元素添加到集合中排作,如果集合中本身存在這個元素,則根據(jù)不重復原則亚情,將不改變已有內(nèi)容妄痪;后者向集合中添加元素不限于單個元素,也可以是列表楞件、元組衫生、字典等。
5.3.4 從集合中刪除元素
從集合中刪除元素共有三種方法:
set.remove(object)
set.dicard(object)
set.pop()
前兩種都是對集合中指定元素的刪除土浸,如果元素存在于集合中罪针,效果是一樣的。如果要刪除的元素不存在于集合中黄伊,remove方法就會報錯泪酱,而discard方法則不會報錯。
pop方法則是隨機刪除集合中的一個元素还最。
增加和刪除元素參考以下例題:
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)
輸出結果如下:
{'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'}
需要注意的一點是墓阀,通過測試發(fā)現(xiàn),利用update方法往集合中增加元素的時候憋活,整數(shù)或者整型是不被允許的岂津,會報錯。此外悦即,字典雖然可以被添加吮成,但是只是把鍵添加進去了,而值則被忽略掉了辜梳。
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é)主要學習了集合(set)這種數(shù)據(jù)類型的基本概念和使用方法契耿,對于這種無序不重復的數(shù)據(jù)類型具體怎樣使用還需要進一步學習瞒大。