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)文章
pycharm第三方庫(kù)安裝失敗的問(wèn)題及解決經(jīng)驗(yàn)分享
這篇文章主要介紹了pycharm第三方庫(kù)安裝失敗的解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05
將pandas.dataframe的數(shù)據(jù)寫(xiě)入到文件中的方法
今天小編就為大家分享一篇將pandas.dataframe的數(shù)據(jù)寫(xiě)入到文件中的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
python實(shí)現(xiàn)emoji對(duì)齊特殊字符對(duì)齊高級(jí)文本對(duì)齊
這篇文章主要為大家介紹了python實(shí)現(xiàn)emoji對(duì)齊特殊字符對(duì)齊高級(jí)文本對(duì)齊方法實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
Python使用xlrd模塊操作Excel數(shù)據(jù)導(dǎo)入的方法
這篇文章主要介紹了Python使用xlrd模塊操作Excel數(shù)據(jù)導(dǎo)入的方法,涉及Python操作xlrd模塊的技巧,需要的朋友可以參考下2015-05-05
聊聊pytorch測(cè)試的時(shí)候?yàn)楹我由蟤odel.eval()
這篇文章主要介紹了聊聊pytorch測(cè)試的時(shí)候?yàn)楹我由蟤odel.eval()的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05
淺析Python如何實(shí)現(xiàn)Celery任務(wù)隊(duì)列系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了一個(gè)基于 Celery 和 Redis 的分布式任務(wù)隊(duì)列系統(tǒng),用于處理異步任務(wù)和定時(shí)任務(wù),希望對(duì)大家有一定的幫助2025-04-04

