Python集合pop()函數(shù)使用方法詳解
pop() 可以「隨機(jī)刪除」集合中的一個(gè)「元素」
語(yǔ)法
set.pop()
返回值
- 返回刪除的元素
實(shí)例:隨機(jī)刪除一個(gè)元素
set1 = {'zhangsan', 'lisi', 'wangsu'}
set1.pop()
print(set1)輸出:
{'lisi', 'zhangsan'}
從偽源碼(Python的內(nèi)置函數(shù)看不到源碼,只能看到函數(shù)介紹)中可以看到, pop() 會(huì)「刪除」并「返回」集合中的「元素」,如果集合為「空」,就會(huì)報(bào)錯(cuò) KeyError。

1、隨機(jī)刪除并不完全隨機(jī)
pop() 是基于HashMap實(shí)現(xiàn)的,它總是「刪除」集合中的「第一個(gè)元素」,由于集合是「無(wú)序」的,所以它看起來(lái)就像是「隨機(jī)」刪除元素。
1.1、純數(shù)字
當(dāng)集合中的元素是「純數(shù)字」時(shí),集合會(huì)按照從小到大的順序排列元素,「最小」的數(shù)值會(huì)別排在第一個(gè),所以pop()時(shí),會(huì)刪除最小的那個(gè)元素。
set1 = {1, 5, 3, 9, 2}
print('刪除前:', set1)
set1.pop()
print('刪除后:', set1)第一次執(zhí)行輸出:
刪除前: {1, 2, 3, 5, 9}
刪除后: {2, 3, 5, 9}
第二次執(zhí)行輸出:
刪除前: {1, 2, 3, 5, 9}
刪除后: {2, 3, 5, 9}
多執(zhí)行幾次,我們可以發(fā)現(xiàn), pop() 每次都刪除1,因?yàn)?是最小的,總是被排在第一個(gè)。
1.2、純字符
當(dāng)集合中的元素是「純字符串」時(shí),集合無(wú)法保證元素的排序,由于 pop() 總是刪除第一個(gè)元素,所以這種情況看起來(lái)就是隨機(jī)刪除。
set1 = {'aaa', 'bbb', 'ccc', 'ddd'}
print('刪除前:', set1)
set1.pop()
print('刪除后:', set1)第一次執(zhí)行輸出:
刪除前: {'ddd', 'bbb', 'aaa', 'ccc'}
刪除后: {'bbb', 'aaa', 'ccc'}
第二次執(zhí)行輸出:
刪除前: {'ddd', 'aaa', 'ccc', 'bbb'}
刪除后: {'aaa', 'ccc', 'bbb'}
多次執(zhí)行可以發(fā)現(xiàn),每次集合中的元素排序都是隨機(jī)的,而 pop() 也會(huì) “隨機(jī)” 的刪除集合中的第一個(gè)元素。
1.3、混合情況
當(dāng)集合中的元素有字符串、整形、元組等「混合」組合時(shí),元素的排序會(huì)變得隨機(jī),當(dāng)然, pop() 仍然會(huì)固執(zhí)地刪除第一個(gè)元素。
set1 = {(1, 2), (5, 6), (9, 8), (3, 4), 'aaa', 1, 2}
print('刪除前:', set1)
set1.pop()
print('刪除后:', set1)輸出:
刪除前: {'aaa', 1, 2, (1, 2), (3, 4), (9, 8), (5, 6)}
刪除后: {1, 2, (1, 2), (3, 4), (9, 8), (5, 6)}
2、空集合
使用 pop() 的集合,必須有元素,「空集合」會(huì)報(bào)錯(cuò) KeyError。
set2 = set() set2.pop()
輸出:

這種格式的‘空集合’ 也會(huì)報(bào)錯(cuò)
set1 = {}
set1.pop()輸出:

實(shí)際上,這并不是集合,而是字典
set1 = {}
print(type(set1))輸出:
<class 'dict'>
到此這篇關(guān)于Python集合pop()函數(shù)使用方法詳解的文章就介紹到這了,更多相關(guān)Python集合pop()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Pytorch卷積神經(jīng)網(wǎng)絡(luò)遷移學(xué)習(xí)的目標(biāo)及好處
這篇文章主要為大家介紹了Pytorch卷積神經(jīng)網(wǎng)絡(luò)遷移學(xué)習(xí)的目標(biāo)實(shí)現(xiàn)代碼及好處介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
python os模塊在系統(tǒng)管理中的應(yīng)用
這篇文章主要介紹了python os模塊在系統(tǒng)管理中的應(yīng)用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06
Python爬取網(wǎng)頁(yè)的所有內(nèi)外鏈的代碼
這篇文章主要介紹了Python爬取網(wǎng)頁(yè)的所有內(nèi)外鏈,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04
解決python 出現(xiàn)unknown encoding: idna 的問(wèn)題
這篇文章主要介紹了解決python出現(xiàn) unknown encoding: idna 的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
Python讀寫及備份oracle數(shù)據(jù)庫(kù)操作示例
這篇文章主要介紹了Python讀寫及備份oracle數(shù)據(jù)庫(kù)操作,結(jié)合實(shí)例形式分析了Python針對(duì)Oracle數(shù)據(jù)庫(kù)操作的相關(guān)庫(kù)安裝,以及使用cx_Oracle與pandas庫(kù)進(jìn)行Oracle數(shù)據(jù)庫(kù)的查詢、插入、備份等操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-05-05
python多進(jìn)程實(shí)現(xiàn)文件下載傳輸功能
這篇文章主要為大家詳細(xì)介紹了python多進(jìn)程實(shí)現(xiàn)文件下載傳輸功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
Python實(shí)現(xiàn)Mysql數(shù)據(jù)庫(kù)連接池實(shí)例詳解
這篇文章主要介紹了Python實(shí)現(xiàn)Mysql數(shù)據(jù)庫(kù)連接池實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-04-04

