Python集合pop()函数使用方法详解
作者:士别三日wyx
pop() 可以「随机删除」集合中的一个「元素」
语法
set.pop()
返回值
- 返回删除的元素
实例:随机删除一个元素
set1 = {'zhangsan', 'lisi', 'wangsu'} set1.pop() print(set1)
输出:
{'lisi', 'zhangsan'}
从伪源码(Python的内置函数看不到源码,只能看到函数介绍)中可以看到, pop() 会「删除」并「返回」集合中的「元素」,如果集合为「空」,就会报错 KeyError。
1、随机删除并不完全随机
pop() 是基于HashMap实现的,它总是「删除」集合中的「第一个元素」,由于集合是「无序」的,所以它看起来就像是「随机」删除元素。
1.1、纯数字
当集合中的元素是「纯数字」时,集合会按照从小到大的顺序排列元素,「最小」的数值会别排在第一个,所以pop()时,会删除最小的那个元素。
set1 = {1, 5, 3, 9, 2} print('删除前:', set1) set1.pop() print('删除后:', set1)
第一次执行输出:
删除前: {1, 2, 3, 5, 9}
删除后: {2, 3, 5, 9}
第二次执行输出:
删除前: {1, 2, 3, 5, 9}
删除后: {2, 3, 5, 9}
多执行几次,我们可以发现, pop() 每次都删除1,因为1是最小的,总是被排在第一个。
1.2、纯字符
当集合中的元素是「纯字符串」时,集合无法保证元素的排序,由于 pop() 总是删除第一个元素,所以这种情况看起来就是随机删除。
set1 = {'aaa', 'bbb', 'ccc', 'ddd'} print('删除前:', set1) set1.pop() print('删除后:', set1)
第一次执行输出:
删除前: {'ddd', 'bbb', 'aaa', 'ccc'}
删除后: {'bbb', 'aaa', 'ccc'}
第二次执行输出:
删除前: {'ddd', 'aaa', 'ccc', 'bbb'}
删除后: {'aaa', 'ccc', 'bbb'}
多次执行可以发现,每次集合中的元素排序都是随机的,而 pop() 也会 “随机” 的删除集合中的第一个元素。
1.3、混合情况
当集合中的元素有字符串、整形、元组等「混合」组合时,元素的排序会变得随机,当然, pop() 仍然会固执地删除第一个元素。
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()函数使用方法详解的文章就介绍到这了,更多相关Python集合pop()内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!