Python集合操作方法詳解
集合是無序的,天生不重復(fù)的數(shù)據(jù)組合,它的作用如下:
- 去重,即:把一個(gè)列表變成集合,就去重了
- 關(guān)系測試,即:測試兩組集合的交集、并集和差集等
一、集合常用方法總結(jié)
二、定義
1、語法
>>> name_1 = [1,2,3,4,7,8,7,10] #把列表轉(zhuǎn)換為集合 >>> name_1 = set(name_1) #轉(zhuǎn)換后,去重 >>> print(name_1,type(name_1)) {1, 2, 3, 4, 7, 8, 10} <class 'set'>
三、關(guān)系測試
1、交集(intersection())
>>> name_1 = [1,2,3,4,7,8,7,10] >>> name_2 = [1,3,5,8,10] >>> name_1 = set(name_1) >>> name_2 = set(name_2) #輸出結(jié)果 >>> name_1.intersection(name_2) {8, 1, 10, 3}
2、并集(union())
>>> name_1 = [1,2,3,4,7,8,7,10] >>> name_2 = [1,3,5,8,10] >>> name_1 = set(name_1) >>> name_2 = set(name_2) #輸出結(jié)果 >>> name_1.union(name_2) {1, 2, 3, 4, 5, 7, 8, 10}
3、差集(difference())
>>> name_1 = [1,2,3,4,7,8,7,10] >>> name_2 = [1,3,5,8,10] >>> name_1 = set(name_1) >>> name_2 = set(name_2) #輸出結(jié)果 >>> name_1.difference(name_2) {2, 4, 7}
特別提示:差集取的是數(shù)值在第一個(gè)集合中,但是不在第二個(gè)集合中(在我不在你)
4、issubset()
判斷一個(gè)集合是否是另一個(gè)集合的子集
>>> name_1 = [1,2,3,4,7,8,7,10] >>> name_3 = [1,2,3,4] >>> name_1 = set(name_1) >>> name_3 = set(name_3) #輸出結(jié)果 >>> name_3.issubset(name_1) True
5、issuperset()
判斷一個(gè)集合是否是另一個(gè)集合的父集
>>> name_1 = [1,2,3,4,7,8,7,10] >>> name_3 = [1,2,3,4] >>> name_1 = set(name_1) >>> name_3 = set(name_3) #輸出結(jié)果 >>> name_1.issuperset(name_3) True
6、對稱差集(symmetric_difference())
把兩個(gè)集合沒有交集的數(shù)值取出來
>>> name_1 = [1,2,3,4,7,8,7,10] >>> name_2 = [1,3,5,8,10] >>> name_1 = set(name_1) >>> name_2 = set(name_2) #輸出結(jié)果 >>> name_1.symmetric_difference(name_2) {2, 4, 5, 7}
7、isdisjoint()
判斷兩個(gè)集合是否有交集,沒有交集,則返回True
>>> name_1 = [1,2,3,4,7,8,7,10] >>> name_2 = [1,3,5,8,10] >>> name_3 = [11] >>> name_1 = set(name_1) >>> name_2 = set(name_2) >>> name_3 = set(name_3) #有交集 >>> name_1.isdisjoint(name_2) False #無交集 >>> name_1.isdisjoint(name_3) True
四、關(guān)系測試(特殊符號(hào))
1、交集(&)
>>> name_1 = [1,2,3,4,7,8,7,10] >>> name_2 = [1,3,5,8,10] >>> name_1 = set(name_1) >>> name_2 = set(name_2) #結(jié)果輸出 >>> name_1 & name_2 {8, 1, 10, 3}
2、并集(|)
>>> name_1 = [1,2,3,4,7,8,7,10] >>> name_2 = [1,3,5,8,10] >>> name_1 = set(name_1) >>> name_2 = set(name_2) #結(jié)果輸出 >>> name_1 | name_2 {1, 2, 3, 4, 5, 7, 8, 10}
3、差集(-)
>>> name_1 = [1,2,3,4,7,8,7,10] >>> name_2 = [1,3,5,8,10] >>> name_1 = set(name_1) >>> name_2 = set(name_2) #結(jié)果輸出 >>> name_1 - name_2 {2, 4, 7}
4、對稱差集(^)
>>> name_1 = [1,2,3,4,7,8,7,10] >>> name_2 = [1,3,5,8,10] >>> name_1 = set(name_1) >>> name_2 = set(name_2) #輸出 >>> name_1 ^ name_2 {2, 4, 5, 7}
5、是否是子集(<=)
>>> name_1 = [1,2,3,4,7,8,10] >>> name_3 = [1,2,3,4] >>> name_1 = set(name_1) >>> name_3 = set(name_3) #輸出 >>> name_3 <= name_1 True
6、是否是父集(>=)
>>> name_1 = [1,2,3,4,7,8,10] >>> name_3 = [1,2,3,4] >>> name_1 = set(name_1) >>> name_3 = set(name_3) #輸出 >>> name_1 >= name_3 True
五、基本操作
1、添加(add())
>>> name_2 = [1,3,5,8,10] >>> name_2 = set(name_2) #添加已存在,不報(bào)錯(cuò) >>> name_2.add(1) >>> name_2 {8, 1, 10, 3, 5} #添加不存在,添加一個(gè)新的數(shù)值 >>> name_2.add(11) >>> name_2 {1, 3, 5, 8, 10, 11}
2、添加多項(xiàng)(update())
>>> name_2 = [1,3,5,8,10] >>> name_2 = set(name_2) >>> name_2.update([12,13,14]) #輸出結(jié)果 >>> name_2 {1, 3, 5, 8, 10, 12, 13, 14}
3、刪除(remove(),pop(),discard())
①remove()
>>> name_2 = [1,3,5,8,10] >>> name_2 = set(name_2) >>> name_2 {8, 1, 10, 3, 5} >>> name_2.remove(1) #輸出 >>> name_2 {8, 10, 3, 5} #刪除不存在的元素,會(huì)報(bào)錯(cuò) >>> name_2.remove(1) Traceback (most recent call last): File "<input>", line 1, in <module> KeyError: 1
特別提示:用remove刪除時(shí),當(dāng)元素不存在,會(huì)報(bào)錯(cuò)
②pop()
>>> name_2 = [1,3,5,8,10] >>> name_2 = set(name_2) >>> name_2 {8, 1, 10, 3, 5} #輸出 >>> name_2.pop() 8
特別提示:pop是隨機(jī)刪除集合中的某個(gè)元素,并且打印
③discard()
>>> name_2 = [1,3,5,8,10] >>> name_2 = set(name_2) >>> name_2.discard(10) #輸出結(jié)果 >>> name_2 {8, 1, 3, 5} #刪除不存在元素,不報(bào)錯(cuò) >>> name_2.discard(10)
特別提示:用discard刪除不存在的元素,不會(huì)出現(xiàn)報(bào)錯(cuò)
4、長度(len())
>>> name_1 = [1,2,3,4,7,8,7,10] >>> name_1 = set(name_1) #結(jié)果輸出 >>> len(name_1) 7
5、x in s
測試 x 是否是 s 的成員
>>> name_1 = [1,2,3,4,7,8,7,10] >>> name_1 = set(name_1) #結(jié)果輸出 >>> 1 in name_1 True
6、x not in s
測試 x 是否不是 s 的成員
>>> name_1 = [1,2,3,4,7,8,7,10] >>> name_1 = set(name_1) #輸出 >>> 12 not in name_1 True
更多關(guān)于Python集合操作方法可查看下面的相關(guān)鏈接
相關(guān)文章
Python反爬實(shí)戰(zhàn)掌握酷狗音樂排行榜加密規(guī)則
最新的酷狗音樂反爬來襲,本文介紹如何利用Python掌握酷狗排行榜加密規(guī)則,本章內(nèi)容只限學(xué)習(xí),切勿用作其他用途?。。。?! 有需要的朋友可以借鑒參考下2021-10-10教你怎么用python實(shí)現(xiàn)字符串轉(zhuǎn)日期
今天教各位小伙伴怎么用python實(shí)現(xiàn)字符串轉(zhuǎn)日期,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴很有幫助,需要的朋友可以參考下2021-05-05Django Channel實(shí)時(shí)推送與聊天的示例代碼
這篇文章主要介紹了Django Channel實(shí)時(shí)推送與聊天的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04python 解決print數(shù)組/矩陣無法完整輸出的問題
這篇文章主要介紹了關(guān)于python 解決print數(shù)組/矩陣無法完整輸出的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02Python xmltodict模塊安裝及代碼實(shí)例
這篇文章主要介紹了Python xmltodict模塊安裝及代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10Pandas數(shù)據(jù)處理庫畫圖與文件讀取使用示例
這篇文章主要為大家介紹了Pandas數(shù)據(jù)處理庫畫圖與文件讀取使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10Python實(shí)現(xiàn)根據(jù)IP地址和子網(wǎng)掩碼算出網(wǎng)段的方法
這篇文章主要介紹了Python實(shí)現(xiàn)根據(jù)IP地址和子網(wǎng)掩碼算出網(wǎng)段的方法,涉及Python基于Linux平臺(tái)的字符串操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07