Python集合pop()函数使用方法详解

 更新时间:2023年07月26日 10:29:09   作者:士别三日wyx  
这篇文章主要介绍了Python 集合 pop()函数的使用方法,文中有详细的代码实例,讲解的非常清楚,具有一定的参考价值,需要的朋友可以参考下

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()内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 用Python给图像算法做个简单应用界面

    用Python给图像算法做个简单应用界面

    这篇文章主要介绍了用Python给图像算法做个简单应用界面,帮助大家更好的理解和学习使用python开发gui,感兴趣的朋友可以了解下
    2021-05-05
  • 基于Python实现的微信好友数据分析

    基于Python实现的微信好友数据分析

    这篇文章主要介绍了基于Python实现的微信好友数据分析的相关知识,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-02-02
  • python异步爬虫之多线程

    python异步爬虫之多线程

    这篇文章主要介绍了python异步爬虫之多线程,多线程可以为相关阻塞的操作单独开启线程或者进程,阻塞操作可以异步执行,但是无法无限制开启多线程或多进程,下面我们一起学习详细内容,需要的朋友可以参考一下
    2022-02-02
  • Python Numpy计算各类距离的方法

    Python Numpy计算各类距离的方法

    这篇文章主要介绍了Python Numpy计算各类距离的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 利用keras使用神经网络预测销量操作

    利用keras使用神经网络预测销量操作

    这篇文章主要介绍了利用keras使用神经网络预测销量操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • 使用python创建生成动态链接库dll的方法

    使用python创建生成动态链接库dll的方法

    这篇文章主要介绍了使用python创建生成动态链接库dll的方法,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • 使用matlab或python将txt文件转为excel表格

    使用matlab或python将txt文件转为excel表格

    这篇文章主要介绍了matlab或python代码将txt文件转为excel表格,本文通过matlab代码和python 代码给大家详细介绍,需要的朋友可以参考下
    2019-11-11
  • 解决Python pip 自动更新升级失败的问题

    解决Python pip 自动更新升级失败的问题

    今天小编就为大家分享一篇解决Python pip 自动更新升级失败的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • 解决python路径错误,运行.py文件,找不到路径的问题

    解决python路径错误,运行.py文件,找不到路径的问题

    这篇文章主要介绍了解决python路径错误,运行.py文件,找不到路径的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 教你用Python实现一个轮盘抽奖小游戏

    教你用Python实现一个轮盘抽奖小游戏

    Python提供了许多个图像开发界面的库,比如现在主流的Tkinter,wxPython,pyqt5等,三种各有优点,也各有缺点,下面对其分别进行介绍和对比,并编写代码实现一个轮盘转盘抽奖小游戏.需要的朋友可以参考下
    2021-05-05

最新评论