python集合
集合(英文名 set),它是一個(gè)無(wú)序的不重復(fù)元素序列。
這里面有兩個(gè)重點(diǎn):
無(wú)序,
不重復(fù)
1. 創(chuàng)建集合
集合的創(chuàng)建有兩種方法
第一種方法:使用 花括號(hào) {}
直接創(chuàng)建,創(chuàng)建的時(shí)候,{}
可以包含有重要的元素,但是創(chuàng)建完后,集合會(huì)去重,只留第一個(gè)。
>>> aset = {"Apple", "Huawei", "Xiaomi"}
>>> aset
set(['Huawei', 'Xiaomi', 'Apple'])
第二種方法:使用 set()
方法進(jìn)行創(chuàng)建,當(dāng)set()
函數(shù)不接任何參數(shù)時(shí),創(chuàng)建的是空集合,如果不創(chuàng)建空集合,可以傳入一個(gè)列表。
>>> bset = set() # 空集合
>>> bset
set([])
>>> cset = set(["Apple", "Huawei", "Xiaomi"])
>>> cset
set(['Huawei', 'Apple', 'Xiaomi'])
2. 增刪改查
增加元素
使用 add
函數(shù)可以往集合中傳入函數(shù)
>>> aset = set()
>>> aset
set([])
>>> aset.add("Apple")
>>> aset.add("Huawei")
>>> aset
set(['Huawei', 'Apple'])
另外,還可以使用 update
函數(shù),來(lái)往集合中添加元素,update
函數(shù)后可接集合,列表,元組,字典等。
這是接集合的例子
>>> aset = set()
>>> aset
set([])
>>>
>>> # 接集合
>>> aset.update({"Apple"})
>>> aset
set(['Apple'])
>>>
>>> # 接列表
>>> aset.update(["Huawei"])
>>> aset
set(['Huawei', 'Apple'])
>>>
>>> # 接元組
>>> aset.update(("Xiaomi",))
>>> aset
set(['Huawei', 'Apple', 'Xiaomi'])
>>>
>>> # 接字典
>>> aset.update({"VIVO": "xxxx"})
>>> aset
set(['Huawei', 'Apple', 'VIVO', 'Xiaomi'])
刪除元素
使用 remove
函數(shù)可以刪除集合中的元素
>>> aset = {"Apple", "Huawei", "Xiaomi"}
>>> aset.remove("Xiaomi")
>>> aset
set(['Huawei', 'Apple'])
使用 remove
函數(shù),如果對(duì)應(yīng)的元素不存在,是會(huì)報(bào)錯(cuò)的。
>>> aset = {"Apple", "Huawei", "Xiaomi"}
>>> aset.remove("VIVO")
Traceback (most recent call last):
File "", line 1, in
KeyError: 'VIVO'
對(duì)于這種情況,你可以使用 discard
函數(shù),存在元素則移除,不存在也不會(huì)報(bào)錯(cuò)。
>>> aset = {"Apple", "Huawei", "Xiaomi"}
>>> aset.discard("VIVO")
>>> aset
set(['Huawei', 'Xiaomi', 'Apple'])
此外,還有一個(gè) pop
函數(shù),用于從集合中隨機(jī)刪除元素,和列表、字典的 pop
不一樣,這里的 pop 不能加任何的參數(shù)。
>>> aset = {"Apple", "Huawei", "Xiaomi"}
>>> aset.pop()
'Huawei'
>>> aset.pop()
'Xiaomi'
>>> aset.pop()
'Apple'
最后,還要介紹一個(gè) clear
函數(shù),它用于清空集合的元素。
>>> aset = {"Apple", "Huawei", "Xiaomi"}
>>> aset
set(['Huawei', 'Xiaomi', 'Apple'])
>>> aset.clear()
>>> aset
set([])
修改元素
文章開(kāi)頭處,已經(jīng)說(shuō)明了集合是 無(wú)序
的,因此集合是沒(méi)有索引的。
既然沒(méi)有索引,修改也無(wú)從談起。
記住:集合只有添加元素、刪除元素。
查詢(xún)?cè)?/strong>
同上,沒(méi)有順序,也就沒(méi)有索引,沒(méi)有索引,查詢(xún)也無(wú)從談起。
但是我們可以查看集合的其他內(nèi)容
比如,查看集合的長(zhǎng)度
>>> aset = {"Apple", "Huawei", "Xiaomi"}
>>> len(aset)
3
3. 集合運(yùn)算
求合集
將兩個(gè)集合進(jìn)行合并并去重,可以使用 union
函數(shù),下面的示例中,由于 Huawei
是重復(fù)的元素,只會(huì)保留一個(gè)。
>>> aset = {"Apple", "Huawei"}
>>> bset = {"Xiaomi", "Huawei"}
>>> aset.union(bset)
set(['Huawei', 'Apple', 'Xiaomi'])
另外還可以使用 |
的操作符
>>> aset = {"Apple", "Huawei"}
>>> bset = {"Xiaomi", "Huawei"}
>>> aset | bset
set(['Huawei', 'Apple', 'Xiaomi'])
求差集
要找出存在集合 A 但是不存在 集合 B 的元素,就是對(duì)兩個(gè)集合求差集。
可以使用 difference
函數(shù),下面的示例中, Apple
在 aset 中存在,但在 bset 中不存在。
>>> aset = {"Apple", "Huawei"}
>>> bset = {"Xiaomi", "Huawei"}
>>> aset.difference(bset)
set(['Apple'])
另外還可以使用 -
的操作符,更加直觀
>>> aset = {"Apple", "Huawei"}
>>> bset = {"Xiaomi", "Huawei"}
>>> aset - bset
set(['Apple'])
求交集
要找出存在集合 A 并且存在集合 B 的元素,就是對(duì)兩個(gè)集合求交集。
可以使用 intersection
函數(shù)
>>> aset = {"Apple", "Huawei"}
>>> bset = {"Xiaomi", "Huawei"}
>>> aset.intersection(bset)
set(['Huawei'])
>>>
和 intersection
相似的還有一個(gè) intersection_update
函數(shù),它們的區(qū)別是,intersection_update
會(huì)原地更新在 aset 上,而不是會(huì)回交集。
>>> aset = {"Apple", "Huawei"}
>>> bset = {"Xiaomi", "Huawei"}
>>> aset.intersection_update(bset)
>>> aset
set(['Huawei'])
另外還可以使用 &
的操作符
>>> aset = {"Apple", "Huawei"}
>>> bset = {"Xiaomi", "Huawei"}
>>> aset & bset
set(['Huawei'])
求不重合集
如果計(jì)算兩個(gè)集合中不重復(fù)的元素集合,可以使用 symmetric_difference
函數(shù)
>>> aset = {"Apple", "Huawei"}
>>> bset = {"Xiaomi", "Huawei"}
>>> aset.symmetric_difference(bset)
set(['Xiaomi', 'Apple'])
和 symmetric_difference
相似的還有一個(gè) symmetric_difference_update
函數(shù),它們的區(qū)別是,symmetric_difference_update
會(huì)原地更新在 aset 上,而不是直接返回。
>>> aset = {"Apple", "Huawei"}
>>> bset = {"Xiaomi", "Huawei"}
>>> aset.symmetric_difference_update(bset)
>>> aset
set(['Apple', 'Xiaomi'])
4. 集合判斷
判斷是否有某元素
>>> aset = {"Apple", "Huawei"}
>>> "Apple" in aset
True
判斷兩集合是否有相同元素
如果兩集合有相同元素,則返回 False,如果沒(méi)有相同元素,則返回 True
>>> aset = {"Apple", "Huawei"}
>>> bset = {"Xiaomi", "Huawei"}
>>> aset.isdisjoint(bset)
False
判斷是否是子集
>>> aset = {"Apple", "Huawei"}
>>> bset = {"Huawei"}
>>> bset.issubset(aset)
True
審核編輯:符乾江
-
集合
+關(guān)注
關(guān)注
0文章
9瀏覽量
8194 -
python
+關(guān)注
關(guān)注
56文章
4827瀏覽量
86623
發(fā)布評(píng)論請(qǐng)先 登錄
基礎(chǔ)篇3:掌握Python中的條件語(yǔ)句與循環(huán)
DLP4710EVM-LC兩個(gè)條紋集合投影沖突怎么解決?
使用Python實(shí)現(xiàn)xgboost教程
AN42-基準(zhǔn)電壓源電路集合

Java集合API的改進(jìn)介紹

評(píng)論