Python 集合 pop()函数使用详解,pop随机删除原理(2)

(1)Python所有方向的学习路线(新版)

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

最近我才对这些路线做了一下新的更新,知识体系更全面了。

在这里插入图片描述

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

在这里插入图片描述

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

+ [1.3、混合情况](#13_96)

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。



### 最后

> **🍅 硬核资料**:关注即可领取PPT模板、简历模板、行业经典书籍PDF。  
> **🍅 技术互助**:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。  
> **🍅 面试题库**:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。  
> **🍅 知识体系**:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。




**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618317507)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值