上一个视频中,我们介绍了便利列表时蕊木山竹元素引发的 bug, 大家集思广益,给出了不同的答案,大致可以划分为三种方式,小伙伴你更喜欢哪一种呢? 方式一,删除元素后,让下标向前移动移位为了操作下标,我们使用了一个微尔循环,从零开始变力, 当遇到偶数的时候,我们删除元素,删除完成以后呢,后面的元素会整体移动,就导致了下标的前移,所以呢,我们可以这样,我们可以让这个 i 减去一位,当下次再循环的时候,他还会从当前位置继续操作,所以就避免了这个 bug。 方式二,从后往前删除由于从前往后删除会导致下标向前移动,但是我们可以将这个列表进行一个转至从后往前 前删除,删除后面的元素就不会影响前面元素的下标,所以也就不会产生这样的 bug。 方式三,转化思路,保留基数原来呢,我们要删除一个列表中的偶数,那么现在我们来转化一下思路来保留基数,也就是判断一下,如果他是基数的话,那么就使用列表生成式生成一个新的列表。 那如果你想对列表 a 进行操作的话,那么我们可以这样再把生成的列表复制给列表 a。 小伙伴,这三种方式你更喜欢哪一种呢?
粉丝2.6万获赞8.9万

群里的一个小伙伴问了一个这样的问题,他要修改一个列表,然后呢把这列表中的所有的偶数全部删除,他使用的是蕊木的方式,然后他的问题是为什么没有删除干净。 好,那接下来咱们来运行一下,看一下他的问题,这是他原来的代码,依次便利这个列表中的每一个元素,然后判断一下是不是偶数,如果是偶数的话,就将其删除。好,那接下来咱们来运行,看这个效果, 运行完成以后呢,这里还依然有偶数,那小伙伴你知道为什么吗?那为了更清楚的解释这个问题呢,咱们使用代码可视化工具来看一下代码是如何执行的。我点击开始运行, 创建了一个列表,接下来点击 nest, 判断一下这个元素是不是偶数,当前是一, 一不是手术,然后继续执行放循环。接下来判断第二个数,第二个数呢,他是二,他是偶数,所以呢这里就被移除了,移除完成以后,我们发现这个列表中的锁引位置或者叫下标的位置已经发生了变化, 第二个元素因为被删除就会导致后面的元素整体往前移动,那么当我再次执行的时候,他会默认为第二个元素已经执行完毕了,所以呢他就从第三个元素开始, 这就导致四呢被忽略掉了,所以最终的结果就是我们刚才看到的有一些元素会被忽略掉,那么怎么解决这个 bug 呢?我们下个视频再来详细介绍。

你在使用电脑的时候一定遇到过这种情况,想要删除一个文件夹,但是怎么删都删不掉, 提示在别的地方打开,但是你具体又不知道在哪里面打开的,遇到这种情况不要慌,教你一招解决安排。双击打开文件夹,复制 文件加路径, ctrl 加 shift 加 s, 打开任务管理器,选择性能,打开资源监视器,在此处粘贴刚刚复制的路径,开始搜索,选择第一个进程,右键结束进程,最后我们就可以轻松删除文件加。

怕删不存在的元素报错?用 discar 的方法,存在就删,不存在就不操作。先看基础用法,这是一个集合,那么我们来用 discar 的删除一下,那么 我们去删除的存在的元素三,你去打印的时候效果和瑞木五是一样的,那我们如果用 discard 去删除一个不存在的元素五,打印一下,我们可以 看到得到的是原集合,他不会报错,那这点就要比瑞木要好很多。那么循环清理元素,比如说要把这里面有的二三清理掉,还有一些不存在的元素也给他清理掉,那我们可以看到他不报错。 首先用否循环,后面是列表的形式把它删掉,否循环把每个数给它取出来,然后再用 sd discard 把取出来的每一个数字给它删掉,然后进行打印 运行,这里有两个冒号运行,我们可以看到就已经把存在的元素二三删掉了,那么不存在的五六也不报错,所以迪斯卡的是更安全的删除方法,尤其是处理不确定的元素时,推荐优先使用。下节课我们来学随机删元素。

想精准删掉集合里某个元素,用 re 五方法,这是我们创建的一个基础的集合。假设我们要删除集合三,那么我们就写 s 点 re 五 括号里面写元素,然后打印集合里三就没有了,那么删除不存在的元素,它会报错,我们来试一下。假设我们去删除一个五,运行,它就会报错,那么 如果删除不存在的元素,那我们先去判断元素是否存在,它就不会报错了。比如我们来写如果 五 e s 意思是说如果它在这个集合里面,那么我们就 s 点 rem 五,否则 else, 否则 我们 print 元素不存在运行,那么它就不会报错了。下节课我们学更安全的删元素的方法, discard。

那么我刚刚呢就已经将安娜康的已经删除了,那么删除他以后呢,我们来试一下删除这个 pi char, 在这边呢同样也是在设置里面应用,然后选选到我们的那个 pi char, 在这里我们呢直接将它卸载。 那么现在呢,这里有啊选项,我们看一下第一个选项呢,我这我是建议这三个选项全都勾选,那第一个选项呢,就是说我们历史款存的一个记录, 那么第二个选项呢,就是啊拍唱 py 恰的一个啊配置文件,那这次在这里呢,我们全部选勾选,勾选了以后呢就直接下一步,然后在这里呢就等待他下载完成,卸载完成 好,这边呢应该是已经卸载完成了。

ok, 那我们这节课呢主要是来研究如何删除列表元素,一样有三种方法,第一个 一例的语句,第二个啊, remove 方法,它呢是直接删除掉你元素本身。好,最凶残的是第三个克里尔方法,它能够清空掉你所有的元素。好,在这一个地方呢,我们有一个列表。 好,接着我给大家演示一下地利的语句,比如说我在这个地方,我给他删除了这个第三个元素,行吗?好,我们打印一下这个麦丽丝的。 好,选中文件,直接跑一下程序,你就发现啊,这个五二零是不是不见了,对吧?好, ok, 搞定。好,再接着大家来看一看,如果说我想要删除这一个,第二个到第四个行不行? ok, 没问题,对不对?好,来,我们再来执行一下程序,你就会发现 幺三幺四到五二零都不见了,对吧? ok, 好,这个呢是我们的一个地利的一句。好,再接着。呃,如果说我想要删除掉这个什么拍摄的话,那应该是用到 remover 这个方法,对不对?好, ok, 那么我们就需要使用到这个 my list 啊 啊,点上我们这个瑞木的方法对不对?好,那么再把你想要删除的元素呢放到里面来。哎,这个时候我们再来跑一下程序,你就可以发现,拍神这个字符串呢,已经不见了,对吧?啊,已经不见了。好,那么我最后演示一下最凶长的颗粒液方法, 那么麦丽丝的点颗粒儿之后啊,他所有的元素都会被清空。好,来执行一下,你就会发现所有的东西都不见了,对吧?非常简单。 ok。

从字典中删除元素,这两种方法一定要知道。第一种如下,使用 dl 删除对应键的元素。第二,使用框谱删除不同指数在于 dl 不返为止,框谱返回删除键对应的字,你看实现无此键。

一个文件夹里面有很多个 mp 三音频文件,但是开头的片头太长了,四十秒,怎么用 check gpt 批量去掉这些片头呢?在 check gpt 中输入提示词,你是一个拍放编程专家,要完成一个批量删除掉对话音频文件开头的任务。 具体步骤如下,打开文件夹 d 英语学习图书配套资源英语听力的逻辑高级飞跃获取文件夹里面所有的 mp 三文件,逐一删除掉每个 mp 三文件的开头四十秒。注意,每一步都要输出相关信息, 不用修改原文件名,直接覆盖原文件。原代码如下, importos from paid of import audio segment 要处理的目录 the action e d 英语学习图书 配套资源英语听力的逻辑高级飞跃获取目录中的所有文件 file sauce list dear directory 过滤出所有的 m p 三文件 m p 三 files 等于 both else expensive m p 三 print 找到个 m p 三文件 formax the m p 三 files 逐一处理每个 m p 三文件。 for i m p 三 file in enumerate m p 三 files 一 print 正在处理,递个文件 包,买台 m p 三 fil 加载 m p 三文件 audio audio segment from m p 三 ask path join the actory m p 三 fil 删除前四十秒 hid up 处理音频的单位是毫秒 audio audio 四万保存处理后的音频覆盖原文件 audio export us path join the actor m p 三 file format 等于 m p 三 print 处理完毕。 format m p 三 file print 所有文件处理完毕。很快,八十二个文件全部处理完成。

在盘子当中,关于集合删除数据一共有三个函数,那么第一个呢,是瑞目,第二个是 disco, 那么第三个啊,叫做炮盆,一共三个函数,做集合数据的删除操作。 那么首先呢,对于泡泡啊,他是随机删除某个数据并返回这个数据。向上来看啊, disco 的话呢,是删除指定数据,如果数据不存在呢,他不报错。 但是还有第一个是不同的蕊木,他也是删除指定的数据,但是如果数据不存在,蕊木报错,那也就是说蕊木和迪斯卡的都是删除集合中指定的数据。但不同点是,蕊木如果删除的数据不存在是报错, disco 则不报错。 那接下来我们带着三个关于删除数据的函数,咱们回到拍场当中来,咱们来做一个实验做测试啊。好,那么接下来咱们打开拍场, 在拍照里边呢,老师准备好了一个集合,那么我们刚才说了,是不是一共有瑞目这个函数,是不是还有一个 d i s 啊, d i s c a 二 d d 四 靠的这个函数,是不是还有一个叫做 p o p pop 这个函数。那么一共三个函数,咱们去做删除的测试。那么首先第一个呢,我们说是瑞目,瑞目的话,同学们还记不记得他是删除指定数据,如果如果数据不存在会怎么样来着?哎,他是报错的。 好,那接下来啊,咱们来做一个操作来试一下啊。首先我们删除一个存在的数据,再去删除一个不存在的数据,分别做测试啊。然后 s 一打点,我们去调用瑞目这个函数,比如说小括号里面我们填充一个十,现在我们 pro 打印 s 一这个集合,当我们去 右键软同,我们来看一下十这个数据是不是就删除掉了。但是如果此时此刻的情况下,我们仍然 s 一打点瑞目仍然删除十,他们想一下啊, 十这个数据是不是在第四行调用蕊木这个函数的时候,是不是已经被删除掉了?当我们在第七行仍然去调用蕊木删除十的时候,我们再打印 s 一会怎么样呢?同学们注意右键来转,我们来看一下是不是报错了。 ok 啊。所以那么也就是说啊,如果我们使用蕊木做删除指定数据的时候,数据不存在,是不是报错的对不对?哎,接下来啊,咱们在这个地方打一个哎,报错对不对?哎,并把它注视掉啊,并把它注视掉。 好。那么接下来啊,咱们把蕊目函数的测试代码,咱们把它注视掉。基础之上,咱们做迪斯科的,他们还记不记得迪斯科的他也是删除集合当 中的指定数据跟蕊目的不同点是什么?如果数据不存在,报错吗?哎,他不报错。接下来咱们来试一下啊。那就是说此时呢,我们 s 一打点吊,用迪斯科的这个函数还是删除。比如说使这个数据,当我们推进他打印 s 一,右键再去软他们来看, 是不是十这个数据删除掉了。那如果我们再用 s 一仍然迪斯卡,他调用一下还删除十,那这个时候因为十是不是被上一行代码已经删除掉了。在此基础之上,咱们再运行会怎么样呢? 是不是实仍然没有,因为已经实这个数据在第十一行迪斯卡的调用的时候被删除掉了,即便第十四行又迪斯卡的删除,实是不是也是不报错的对不对? ok 啊。那么这是我们的一个迪斯科的这个 喊数做删除指定数据,如果数据不存在,是不是也不会报错?那么接下来咱们试一下这个泡泡。泡泡的话同学们还记不记得啊?我们说他是叫做随机哎,随机删除某个数据,那么并反 返回。哎,这个这个数据对不对?哎,接下来咱们来试一下啊。 s 一打点吊用泡泡,并且此时此刻我们说他会返回这个数据,那我们就来一个变量,比如说去接收他, 那么这个时候我们 pent 打印点离他南北,再 pent 打印。 s 一咱们来看一下啊,右键转一下,咱们来看 删除的是几啊?是四十打印集合。集合里面的数据四十是不是不见了对不对?哎,这是我们的一个泡泡,随机删除,他可能删第一个,也可能删第二个,是不是也可能删第三个,对不对?哎,这是一个随机删除啊。好了,那接下 来啊,关于集合删除数据的三个函数,我们分别测试完成,咱们跟着老师一块回到笔记当中来做一个小回顾啊。好,打开笔记。首先关于集合删除数据,第一个讲解的是不是蕊目,他是删除指定数据,小块填写的是不是就是我们要删除的目标, 如果数据不存在,是不是他是报错的?当然还有一个 disco 的,也用来删除集合中的指定数据,如果数据不存在, disco 的不会报错对不对? ok, 那么再来看最后一个啊泡泡,泡泡翻译为随机删除某个数据并返回这个数据对不对?好,那么这是我们的一个泡泡函数。 那么关于集合删除数据的三个函数啊,咱们就讲解完成了。其实集合数据的查找啊,非常简单,就是一个印和一个孬的印。那印和闹的印呢?分别是用来判断我们数据是否 在我们的集合里面。拿印去判断的话呢?如果数据存在返回处,否则返回放肆。闹的印是判断数据不在某个序列里面,如果真的不再返回处,否则返回放肆。那接下来同学们跟着老师一块啊,咱们在拍场当中敲代码,做一个实验, 打开拍唱。在拍唱目里边呢,老师准备了一个 s 一这个集合,并存出了十二十三十四十五十这几个数据。那么在此基础之上,我们却用印和孬体印去做一个判断。咱们这样啊,用印 或者是我们这个挠他印哎,挠他印去判断。比如说咱们选取一个数据啊,判断数据十是否存在。哎。那么这个时候怎么解呢?我们可以这样来啊,比如说破音他数据十放在这印印谁呢?序列名 s 一。那么在此基础之上,他们想想右键软的时候反 回啊,非常好。咱们来看是不是跟我们讲的一样,反馈处,因为我实这个数据是不是确实是存在于 s 一这个集合当中的。 好,那么接下来啊,如果同样的情况下,我们用十闹他音去判断十是否在 se 当中,会反馈什么?如果是闹的音, 我们分析一下啊,使这个数据是在 s 一里面的,但是 nute 判断不存在,返回的结果将是一个哎非常好 boss。 那么接下来当我们右键软他们来看一下是不是果然返回的是 boss。 那么这就是一个印和 nilte 去判断我们指定的数据是否存在。 那接下来同学们跟着老师回到笔记当中来,咱们来做一个回顾啊。打开笔记,那印的话呢?是判断数据在集合序列里面,挠的印用来判断数据,他不再集合序列里面,那么这是一个印和挠的印。做查找,判断数据是否存在。那么当印和挠的印讲解完成。

每天教会一个 python 知识点之流程控制,今天我们来学习一个非常实用的工具, able contextwave 点 suppress。 在 编程过程中,我们经常会遇到这样的情况,某些代码可能会抛出异常,但我们并不关心这个异常,只想简单地忽略它。比如删除一个可能不存在的文件,或者从字典中获取一个可能不存在的键。 传统的做法是使用 try accept 语句块,就像屏幕上展示的这样,当文件不存在时,会抛出 file not found error 异常,我们用 pass 语句来忽略它。但是当我们有多个这样的场景时,代码会变得非常永长和重复。 这时候, able context sleep 模块中的 able suppress 上下文管理器就派上用场了。 able suppress 是 python 标准库的一部分,从 python 三点四版本开始引入。它的作用是在 able with 与句块中静默地忽略指定的异常类型。 首先,我们需要从 able context lab 模块导入 able suppress, 导入语句是 able from able context lab, able import able suppress。 able suppress 的 基本语法非常简单,使用 able with 语句,后面跟 suppress 括号里写上你想要忽略的异常类型。 在 able with 与巨块内部编写可能抛出异常的代码,如果发生了指定的异常,程序会静默地继续执行,不会中断。 able suppress 还支持同时忽略多个异常类型,只需要在括号中用逗号分隔即可。 现在让我们来对比一下传统写法和 able suppress 写法的区别。左边是传统的 able tryable accept 写法,需要四行代码,右边是使用 able suppress 的 写法,只需要两行代码,可以看到 able suppress 写法更加简洁优雅,代码意图也更加清晰明亮。 接下来让我们看几个实际的应用场景。第一个场景是安全的删除文件。当我们想删除一个文件,但不确定文件是否存在时,可以使用 able suppress 来忽略 able file not found error。 第二个场景是安全的关闭连接,当关闭网络连接或文件时,可能会因为连接已断开而冒出异常。使用 able suppress 可以 优雅地处理这种情况。 第三个场景是处理可选操作,当某些操作是可选的,失败了也不影响主流程时, able suppress 非常适用。 最后让我们来总结一下 able contacts 点 able suppress 是 一个简洁优雅的异常忽略工具,它适用于你确定知道可能发生什么异常,并且你确定要忽略这些异常的场景。 记住,不要滥用 able suppress 来隐藏所有异常,那样会让调试变得非常困难。好了,今天的知识点就讲到这里,如果你觉得有帮助,请点赞关注我们,下期再见!

想随机删集合中一个元素,还想用到这个被删的元素,那么用 pop 方法删完直接返回,先看基础用法,这是一个集合,然后我们随机删元素啊,定义 一个变量 delete 的 那么被删的元素,然后再去写 pop, 把它定义整给这个变量,然后我们去打印 这个删除的数字,然后我们再打印这个集合,那么我们可以看到它已经随机删掉了。一这个元素删除后的集合是二三四,那么如果是空集合的话,执行的时候会报错,所以我们要先进行一个判断,那我们先去用 if 条件 去判断上面这个集合, s 就是 我判断它是否非空,那么因为 s 里面是有元素的,所以呢它是非空的,那执行的是这个条件就不会进行报错。那我们看一个案例 模拟抽奖,那么这是一个所有抽奖人的一个集合,现在我们随机取一个人并移除,把它放到 windows 里面,也是抽中的人。那我们来打印中奖者,以及打印剩下的参与者,运行 我们就可以看到中奖者是小芳,以及剩下的参与者就都出来了,所以集合他是无序的。用 pop 的 话是随机删除存储的元素和列表的 pop 按锁影删除是完全不同的。下节课我们学清空集合。