Python集合pop()函數(shù)使用方法詳解
pop() 可以「隨機刪除」集合中的一個「元素」
語法
set.pop()
返回值
- 返回刪除的元素
實例:隨機刪除一個元素
set1 = {'zhangsan', 'lisi', 'wangsu'} set1.pop() print(set1)
輸出:
{'lisi', 'zhangsan'}
從偽源碼(Python的內(nèi)置函數(shù)看不到源碼,只能看到函數(shù)介紹)中可以看到, pop() 會「刪除」并「返回」集合中的「元素」,如果集合為「空」,就會報錯 KeyError。
1、隨機刪除并不完全隨機
pop() 是基于HashMap實現(xiàn)的,它總是「刪除」集合中的「第一個元素」,由于集合是「無序」的,所以它看起來就像是「隨機」刪除元素。
1.1、純數(shù)字
當集合中的元素是「純數(shù)字」時,集合會按照從小到大的順序排列元素,「最小」的數(shù)值會別排在第一個,所以pop()時,會刪除最小的那個元素。
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,因為1是最小的,總是被排在第一個。
1.2、純字符
當集合中的元素是「純字符串」時,集合無法保證元素的排序,由于 pop() 總是刪除第一個元素,所以這種情況看起來就是隨機刪除。
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),每次集合中的元素排序都是隨機的,而 pop() 也會 “隨機” 的刪除集合中的第一個元素。
1.3、混合情況
當集合中的元素有字符串、整形、元組等「混合」組合時,元素的排序會變得隨機,當然, pop() 仍然會固執(zhí)地刪除第一個元素。
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() 的集合,必須有元素,「空集合」會報錯 KeyError。
set2 = set() set2.pop()
輸出:
這種格式的‘空集合’ 也會報錯
set1 = {} set1.pop()
輸出:
實際上,這并不是集合,而是字典
set1 = {} print(type(set1))
輸出:
<class 'dict'>
到此這篇關于Python集合pop()函數(shù)使用方法詳解的文章就介紹到這了,更多相關Python集合pop()內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
pycharm第三方庫安裝失敗的問題及解決經(jīng)驗分享
這篇文章主要介紹了pycharm第三方庫安裝失敗的解決方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05將pandas.dataframe的數(shù)據(jù)寫入到文件中的方法
今天小編就為大家分享一篇將pandas.dataframe的數(shù)據(jù)寫入到文件中的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12python實現(xiàn)emoji對齊特殊字符對齊高級文本對齊
這篇文章主要為大家介紹了python實現(xiàn)emoji對齊特殊字符對齊高級文本對齊方法實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11Python使用xlrd模塊操作Excel數(shù)據(jù)導入的方法
這篇文章主要介紹了Python使用xlrd模塊操作Excel數(shù)據(jù)導入的方法,涉及Python操作xlrd模塊的技巧,需要的朋友可以參考下2015-05-05聊聊pytorch測試的時候為何要加上model.eval()
這篇文章主要介紹了聊聊pytorch測試的時候為何要加上model.eval()的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05淺析Python如何實現(xiàn)Celery任務隊列系統(tǒng)
這篇文章主要為大家詳細介紹了一個基于 Celery 和 Redis 的分布式任務隊列系統(tǒng),用于處理異步任務和定時任務,希望對大家有一定的幫助2025-04-04