粉丝2.0万获赞102.9万

先来看视频,第十八届金教授,这是一个可以把音乐背景和人和人分离,完成,然后点开就可以了来听效果。如今你的录音背景声太杂了,同样也可以去除,造成直播报人生。我叫陈博,原名胡国平。 qq 飞车抖音的电话版怎么样?是不是非常离谱,但更不是太完全免费,并且不需要登录这个程序。 每天测试一个网站之 evo kalamazov, 由一网一将博主分享的 ai 音声分离网站,经主播测试,电脑自带浏览器即可打开。我们导入一首周杰伦的安静试一下。加载了一会就可以下载了,左边的是音乐伴奏,右边的是人声,等待一会下载完成试试效果 还是不错的,而且是免费使用,直接给到吭。

大家好,我是程序员老王,今天我们聊聊 python 中的可迭代对象和迭代器。首先我们看看这么一段程序,我用 for 循环打印出了 list 中的所有元素, 像 list 这样可以放入 for 循环中的对象,就叫做可迭代对象 iterable。 这个 for 循环看着是挺简单的,但是仔细一想啊,其实还挺有门道的。首先, for 循环是怎么拿到 list 中的元素,然后把元素的值赋给变量 i 的 呢? 最直接的办法我们可以用下标来拿,比如我写 list 零, 就取出了 list 的 第零个元素,而 list 零其实是 python 的 一个语法旁, list 零就等于调用 list 的 get item 方法, 它们两个调用其实是一样的,我们来试一试。 可以看到 python 输出的两个,一是符合预期的。没错,让一个对象成为 eatable, 最简单的方法就是实现 get item 函数。这里我实现了一个非常智障的类 my list, 这个类啥都没做呀,就是把一个 list 存了起来。 下面这个 for 循环,它会尝试把 mylist 中的元素打印出来。当然这个 for 循环现在是会出错的,因为 mylist 不是 一个 iterable for。 不知道怎么从 mylist 中拿到元素,我们先来运行一下试试看, 不出所料,拍上提示, mylist 不是 一个 iterable。 现在我们尝试给 mylist 加一个 getitem 的 实线,让它成为 iterable。 在 这里我还加了一个判断,如果 index 大 于 list 的 长度的话,我就返回 index arrow。 for 循环就是通过这个异常来判断 iterable 对 象还有没有更多的元素的。 其实我在这儿写这个有一点儿多余啊,因为 list 它自己本身就能抛出 index arrow, 我 在这里写出来呢,能变得更清晰一点。现在我们来再运行一下程序, 可以看到 for 循环已经正确地运行了, 可喜可贺,可喜可贺啊!代码终于正常工作了。但是仔细一想,事情仿佛并不那么简单。 除了像 list 这种把从零开始的数字当做下标的对象, for 还支持很多下标不是数字的对象啊。比如下面这个程序, 这个程序它有个字典,它的下标不是数字,而是字母串,而且 for 循环打印出来的也不是字典的值,而是下标本身。再比如说这个程序, 这个 for 循环每次会从文件中读取一行之前的字典,好歹有下标,这次连下标都没有了。现在我们来看看这种 eatable 对 象要怎么实现?请看我下面这段代码, 这还是刚才那个 mylist 的 程序啊,但是注意,我注视掉了 getitem 和 for 循环本身。然后最下面我还写了一段很奇怪的代码。实际上,这段很奇怪的代码就模拟了 for 在 处理不带 getitem 的 对象时的逻辑。 当然,这段代码在 python 中实际是用 c 语言来实现的,不过它们的逻辑是一样的。现在我们就来一起读读这段代码。首先, for 循环会调用 mylist 的 eater 函数, eater 函数有一个返回值, it 之后, for 就 会循环不断地调用 it 的 next 方法, 每调用一次 next, 就 会得到一个 mylist 中的元素,直到 next 函数抛出 stop iteration, 异常 循环退出为对象实现。 eater 方法就是让对象变成 eaterable 的 第二种方法,而 eater 方法的返回值也就是这个 it 啊,就叫做 eaterater。 首先让我们来写一下这个 interpreter, 起个名儿就叫 mylist interpreter。 因为之后我们要一个一个返回 mylist 中的元素,所以我们在构造函数中保存一下 mylist 的 引用。 我们还要记录一下当前应该返回的元素的下标 index 出示值为零。 然后是 iterator 中的 next 函数, 如果 index 已经超过了 mylist 的 长度,我们就抛出 stop iteration 异常, 否则我们就返回 index 代表的元素,并把 index 加一 好,这样我们就实现了一个最简单的 eater。 最后是实现 mylist 的 eater 方法, 这个方法的逻辑非常简单啊,我们直接构造一个 my list editor 返回就行了。好,我们把 for 循环的注示去掉,再试试 for 循环这次有没有正常工作。 可以看到现在 for 循环已经可以正常工作了。 最后还有一点小小的瑕疵,看代码 这里我主动调用了 mylist 的 eater 方法,获得了一个 eaterit。 当然,这里更好的做法实际上是使用 eater 函数, 因为 eater 函数既能处理实现了 get item 的 iterable 对 象,也能够处理实现了 eater 的 iterable 对 象。总之,我们得到了 my list 的 iterater i t。 然后我们用 for 循环去便利这个 iterater。 我们来执行一下,发现报错了。因为 for 循环只支持 iterable, 不 支持 iterater, 所以 多数情况下我们都为 iterater 也实现 iterater 函数,把 iterater 也变成 iterable。 我 们现在就来实现一下 iterater 函数。 iterater 的 eater 函数的实现逻辑一般也非常简单啊,就是返回它自己, 这样 for 循环就先会调用 eaterater 的 eater 函数,并得到 eaterater 本身,然后整个循环就能正常工作了。最后我们再试一下, 好,可以看到已经正常工作了。好,这就是今天所有的内容了。如果对我的视频有什么建议,或者有什么想听的话题,欢迎在评论区留言。如果你觉得这个视频对您有帮助的话,希望能点个关注,这里是程序员老王。

面试官问你,在 for each 循环里执行 remove 操作到底会发生什么?很多同学可能会脱口而出,这题我熟,会秒抛 concurrent modification exception 异常。兄弟们, 如果你只达到这一层面,士官心里估计已经给你贴上基础不牢的标签了。今天咱们就来彻底拆解一下为什么阿里巴巴 java 开发手册集合处理第十四条中,要把禁止在 forward 循环里进行元素的 remove i d d 操作列为强制级别的归约。 注意啊,这可不是什么参考建议,这是 p 三 c 代码扫描插件会直接阻断的严重违规问题。面试官,其实是在用暗号考你,你小子认真在生产环境这么写过吗?视频完整笔记我都整理进了两百万次 java 加 ai 面试题库里了,里面包含了主流技术站与几十个项目场景题,还有各个工作年限的简历模板,以及 java 和 ai 大 模型的学习路线。 你想啊,如果你尝试删除 list 中的首个元素,确实代码一跑,立刻秒抛并发修改异常。但这还不是最可怕的,我们来看现场二,假设你尝试删除 list 中的倒数第二个元素,你猜怎么着,程序居然不报错?但是这里藏着一个致命隐患, 最后一个元素被悄无声息地跳过了。结合大厂常见的生产事故来看,在对账清算这种对数据准确性要求极高的核心业务中,漏掉一条数据,那就是一场灾难。 那到底为什么会出现这种诡异的现象呢?我们得提问了, for rich 的 真实面目到底是什么?其实 for rich 只是 java 给你的一层语法堂表象, 把它变异解糖之后,底层的真相是一个 viterator has next 循环。这就引出了核心矛盾,循环便利归 itrater 这个对象管, 但是你删除元素用的却是 list 自己的方法。这两套系统在同时操作同一份数据。 java 为了防止这种乱象,底层设计了一个 filebus 快 速失败触发器机制 初识化的时候, editor 会记录一个 expected mod count 等于 mod count, 这时候天平是平衡的。但是呢,当 list 执行 remove 操作后,它的 mod count 会加一天平瞬间倾斜了。 紧接着 etr 执行 next 获取下一个元素时,会进行强制校验,一旦发现这两个值不等,立刻熔断,抛出 cm 异常。那为什么删导出第二个元素就不报错呢?因为发生了一场致命的数学巧合。 当你删除倒数第二个元素后, less size 会缩小。一巧就巧在此时, iter 的 游标 cursor 恰好等于了当前的 size。 当循环再去判断 his next 的 时候,它的条件是 cursor 不 等于 size, 结果返回了 false, 循环直接提前结束了。真相就是程序根本没机会去执行下一次的 next 方法,直接逃避了 failfast 的 严格叫验,不仅隐藏了 bug, 还遗漏了最后的数据。 既然这里面坑这么深,那在真正的生产环境里,咱们架构师到底该怎么写?给你推演三套方案,第一套方案官方正解,正面应当就是老老实实写 iterate 迭代器。 关键点在于一定要使用 iterate 自带的 remove 方法,它的原理是内部会自动同步 expect mod count 等于 mod count, 规避异常。这套方案朴实性最强,兼容老旧系统和所有 jdk 版本,缺点就是样板代码偏多,有点繁琐。 第二套方案也是我最推荐的优雅首选。如果你的环境是 jdk 八以上,直接用 list remove f 一行代码直接搞定,底层自动帮你封装了迭代器的所有细节与同步机制,高效易读,这是绝大多数常规业务中最契合现代 java 工程的写法。 第三套方案叫函数式防御,咱们直接用 stream api, 通过 filter 过滤生成一个全新的 list。 它的核心思想是无状态设计,绝不修改原集合,也就是 immutable 思想。 虽然不修改原对象,但这套面试调用的方案特别适合并发极高,需要严格保护原始数据的核心业务流。最后咱们总结一下面试终局如何分三步稳稳拿下 offer。 第一步谈原理,你要主动揭露 for each 的 语法堂本质,讲透 modcount 的 fail fast 机制。第二步谈风险,直击倒数第二个元素,不仅不报错,还会漏数据的灵异现象,向面试官凸显你身后的排查实战经验。 第三步谈工程化,顺势给出 removeif 或 stream 的 规范级解法,展现你作为自身开发的架构大局观。记住一句话, 技术选型没有绝对的对错,但优秀的工程师永远会选择那个预期最明确、隐患最少的方案,这才是真正能拿高薪的架构师思维。

有粉丝私信我,像这种 logo 应该如何去除?首先打开摩卡,移除物体,总体上需要两个图层,一个是前景要移除的物体,一个是被识别填充的背景。了解了这个原理后,先处理前景, 用样条工具把要移出的物体圈起来,点击向前跟踪按钮,如果跟踪的过程中样条没有包裹住 logo, 可以 手动调节,直到跟踪完成。接着我们跟踪背景,画一个井量大的范围,把前景图层包含在内,这个是我跟踪好的效果。 把图层名称改为背景,并把图层移到下面,然后点击 remove 移除模块,点击左下角创建洁净版,它会保存这一帧的截图。切换到 ps, 打开这个保存的文件, 用内容识别填充工具把 logo 移除,图像处理好以后,覆盖之前的文件。后期工作经常需要几个软件的协助配合, 每个软件各有自己的优势,即使我以一为主,也需要了解一些其他软件的基础操作,比如 ps, pr、 剪映等,还要精通各种插件才能相互配合, 做出完美的效果。并不是说学会了这个操作流程就能做出完美的效果,需要技术的沉淀,遇到各种问题和报错可以用技术解决。切换回摩卡,点击向前跟踪按钮, 等待渲染结束,这样就完成了,一起来看下效果,需要制作视频的可以私信。

上期我们讲解了借助 os 模块进行文件夹基础操作,本节课我们讲解文件夹的高级操作,一些比较重要的来回到我的文档中来。还有切换目录,比如说当前目录是这个,我想换到其他目录,那你就 c h d r 这个不给他演示了。 macd r 就是 创建目录,这个可能有用的比较多,有一个目录我我想创建一下,那 macd r 后面接一个目录名字就可以了 啊。 r m r m d r 其实就是删除目录名字,删除某一个目录,当然了,你这个目录如果里头有文件,它是上不了的。好吧,除非你这个目录是个空目录才才能上,这都要注意好。 remove 就是 删除某一个文件的, 删除文件不能删除目录,删除目录是 r m d r, 这是干嘛呢?这是修改文件名的啊。 a b s pass, 这是获取一个文件的绝对路径的, 这个我来给大家讲讲,它是 o s 点 pass 下面的 abs pass 来前面我们的代码中经常给大家写的文件路径,比如说前面我们读文件的时候用的这个文件路径, 其实这是相对路径,为什么?因为当前目录就是我们这个项目目录下,项目目录下你是不是有一个 type 三点 t i k 那 这种情况下,你直接基于当前这个目录作为相对路径,那么你只要写文件名就可以了, 因为你当前这个文件就在我的这个相对目录下,所谓相对目录其实说罢了,就是当前目录。好, 那,那我要我我我们这样子,比如说我们通过 os 点 pass, 点 abs pass, 那 我这里面写一个 type 三点 tft, 我 说过 type 三点 tft, 其实它又是文件名,又是 type 三点 tft 这个文件的相对路径。记住啊,是相对路径, 那这个相对路径是因为它是基于我们这个相对目录的,相对目录是当前工程所断的目录,所以我们的程序能够自动找到 type 三点 t i p, 因为你给我一个相对路径,我就能找到了,知道吧?当然,如果你的 type 三点 t i p 不 在我这个目录下,那我用相同路径却找不到。 当我这个相对路径,可能时间这么长了,我并不知道他的绝对路径说是什么。什么叫绝路径?就是从根目录开始的路径,就是绝路路径。什么叫根目录?上 word 师兄,那就是 d 旁, e 旁、 c 旁这样的旁辅开始的才是 根路径,你像这个就是绝对路径,这就是绝路里。为什么?因为他是从一旁旁辅开始,那也就是从根路径开始的路径,就是绝对路径。 好吧,那我现在我想看 type 三点 t x t 的 绝路径,我就调这个函数,它就能帮我打印出来。来看一下,是一旁下 t c h 扣的这个目录中有一个 t c h, 零一有一个太三点 t t x t, 这不就是一个完完整整的绝对路径了吗?只要通过它来获得所属的绝对路径,就这么来的。好,接下来继续 split。 split 是 把目录和文件切割 我们任何一个路径,它是由什么?由文件名和目录组成的。来,我举个例子,你看,大家看到了,这个是一个卷入境,对不对?这个卷入境是不是由两部分组成的,一部分是目录,一部分是文件名,像这个是目录,对不对? 这一个就是文件名。那我现在想把文件名拿出来,或者我想把这个文件所在的目录拿出来,我就需要用到 split 它,它可以帮我们去做切割。来,我们复制一下,运行一下 o s, 点 pass, 点 split。 好, 我们把绝对路径找进去, 找进去之后前面要加个加了。把绝对路径加进去之后,它就帮我们切割成两部分,一部分是目录,一部分是文件名。 你啊,切成两部分,一部分是目录,一部分是文件名。你看看上面这个字幕串,我相信你切完之后你立马就知道了。好吧,好老师,为什么加两个双斜线呢? 实际上这个地方你不加啊,你每一个斜线前面就加一个斜线也是可以的,他也不会出现波浪线的问题,也不会出现波浪线的问题啊,当然这样太麻烦了。你知道实际上使用双斜线的意思就是说前面这个斜线代表转移, 后面这个斜线就是真的斜线。好吧,犹如这个斜线前面加了转移符,所以最后面这个斜线就代表是原声符号的意思。那就不用在前面加个小写了啊, 因为这样做,后面这个斜线它就是一个原声符号了。原声符号就是它原始的,原始的含义,有原始含义的符号。什么叫原始含义?最后当前在 windows 加我们的原始含义,这个斜线代表一个斜向分割符而已。 文件分割符啊,有一台前面加了一个斜线,这个斜线是转 e, 那 加了一个转 e, 我 后面这个斜线它就是原声符号了。既然如此,我这前面就不用加啊,加的意思就是说让所有的这些符号都把它当成原声符号看待,所以加其实是是简单快捷。好, 这是关于文件名的和文件目录的切割,那我要把它合在一起了,用这个交映。好,还有 excel, excel 是 判断这是不是一个普通文件, excel 判断它是不是一个目录,那 excel 是 判断这个文件是不是在词典中存在 啊?好,分离文件的扩展名,使用这个 spell text, spell text 这个也蛮重要的,我也给大家去说一下,去给大家演示一下。我们还是这个文件, 那这个文件它的扩展名是什么?是不是点 t x? 那 我点 t x, 我, 我眼睛看是看得出来,没问题,那现在我要喊通过代码来给大家打印出来。 ps, 这个好,我把看似,其实你用截路径也可以用,像这个地方用像路径也可以,我们用这个其实都可以的,也有问题。好,我把它复制一下,贴 好。我还是加格,六点半也加格好,来运行一下,我们要打印点 print 走,你看他把这个文件的扩展名已经拿到,在这,包括文件扩展名前面的在这, 是不是?其实你要想拿文件扩展名,你是不是通过下标,因为这是一个圆组嘛,通过下标去拿就可以了,他的下标有一,扩展名的下标有一,这个未来可能会用的比较多啊,主要也是把这个目录和文件名连成一个完整的职业路径。好, bass base 是 提取文件名,只提取文件名,不提其他的。好, d r l m 是 提取文件路径,这个其实跟前面的那个 split 啊非常类似。好,返回文件大小, get size 就 返回文件大小。 你看这里面有很多的函数,这些函数我相信大家一次性没办法记得住,对不对?没关系,把这个文档保留下来,未来我需要用到对文件的相互操作的时候,我去这个文档中去找对不对也是可以的。怎么是查官方文档? 我们再给大家说一下,首先你要找到你的官方文档所在的位置,回到我的浏览器中,我这个要退出一下,退出全屏啊。回到浏览器中,在浏览器里面蒙那个, 我们找一下之前那个,找一下之前的。我在哪里说了,在字幕创那个地方,我给大家提了这个,提了这个,提了字幕创,字幕创虚列在这。好,我们把这个官方文档打开,这个官方文档我建议大家可以干嘛?可以直接把它收藏一下, 新疆的收藏夹夹里面已完成,未来了,我就不用再去找了,直接在浏览器里面打开就可以了。好,那首先找到这个标准库参考,稍等一下, 到了我们直接下载下来,点那个本地的也可以。好,标准库参考。有一个找到我们的 os 模块,因为我们刚刚是不是用到的是 os 模块? os 模块这样找不好找,直接搜索 os 就 可以了。哎, 对啊,文件以及目录的访问操作其实都在这其中,跟 os 操作有关的,其实就是这样,懂了,没点击进去,但我这在线的稍微有点慢也还行,懂吗?其实这里面的很多函数都在这来这值,这里面函数更多 啊,这里面函数更多,可以拿到很多的,比如说电视点 c time 是 拿到这个文件最后修改的时间 啊,总而言之,你只要不涉及于文件内容的操作,整个相关的操作只是这个函数里头都有,包括 excel 是 不是我讲过的判断它是不是个文件, excel 判断它是不是一个目录, 那如果是不入,则返回处看。这这边每一个文档都给你说作了说明的,只是这里面把所有的函数都给你列出来了。那我这个文档中是把一部分的啊,未来比较常用的给大家列出来了。好吧,所以还是那句话,大家要慢慢的习惯去查文档,别把别觉得好像是查文档 相当于是抄别人的东西一样不是,在程序员这个岗位中,查文档的能力是很重要的,真的,你去大公司,别人可能就需要考察你查文档。呃,速度快慢的问题。 绝对的,这下我们经常有程序员说我的学习能力很强,你知道什么叫学习能力很强吗?其中有一个体现就是你查文档的速度,如果你查文档都不知道怎么查,你告诉我我的学习能力很强?别扯淡,一边去,这绝对是假话。 你是程序员,每个行业有每个行业的特点啊,你不能把啦,把程序员这个行业跟你读高中的时候那种学习氛围挨在一起是吧?只要是发短书,好像就是作弊一样。不是哦,两方是。好。那关于这一课了,我又开始延伸了一下啊,不好意思,谢谢大家,再见。

piffon 每日学一个小知识,今日学习 os 软木函数。 os 软木函数的作用是删除指定路径的文件,是 python 中删除单个文件的核心函数,无法删除目录。 使用语法固定写法 os remove path 参数 path 未要删除文件的路径字串可传相对路径或绝对路径。 注意要点是,一需导入 os 模块二删除不存在的文件会报错三删除前需确保文件无读写锁定,且有操作权限。下面将十秒案例展示,稍后提问。 提问, os 吕蒙能否直接删除一个包含文件的文件夹?知道答案的小伙伴把答案打在评论区。

好,我们回到上节课内容,上节课呢,我们讲了字母串,也是一个序列,是吧?什么序列?字母的序列,序列有序的排列,只读的序列是什么呢?是圆组 tabo, 我 们可以观察到它的这个类型,小括号指的就是这个 tabo 中括号指的是 list 列表,那大括号指的是什么呢?指的就是 set。 什么是赛?赛就是集合。那这个岛怎么来?就是一堆人 seat 在 一起,坐在一起聊事,它天然具有亲和力,它是一组或者一套东西。 拍子里头怎么去理解这个赛特呢?我们喊救命问一下拍子,拍子说这是无序的容器,而且呢元素是唯一的,那这就是两个事,第一个是无序性,第二个是元素的唯一性。这怎么理解呢?我们先看看这个所谓的无序性, 比如说零到一,那这就是零到一是吧?那零到一是不是等于一到零呢?作为原这个列表肯定是不等的,因为列表是 built in 的 mutiple 的 sequence, sequence 是 序列,序列,序列有序的排列。 那么集合,我们刚才说它是零一,是吧?一零会怎么样呢? 我们可以看到零一和一零怎么样,那看起来是一样的,我就直接问了,说你是不是等于一零?他说什么?他说是等于,所以你前后没有次序的这种东西可不就是无序的,所以他是一种无序的容器。那元素为一,比如说我们看零一 再加一个一,是吧?序列有序的排列,排多少个都可以在后面排着,但是集合就不一样了,零一 再来个一,有相同的就合并在一起,同类的就合并,保证什么呢?保证唯一性。那这个集合怎么添加元素呢?我们首先看看这个列表是怎么添加元素的, 原组他没法添加元素,因为原组是指读的吗?这个列表是怎么样添加元素呢?最简单的是啊喷的方法,在结尾处加 在后边放东西,你说我不想再放后边,我想怎么样?放前面?那就是在零这个位置之前插一个负一,那这个时候这个负一就插在前面,这个是列表的方式?是啊 pin 的 跟 insert 的 s 作为一个 集合,它有什么样的方法呢?我们看一下 n t a b 第一个就是 add, add 添加谁?那我就可以试试呗。 我添加个一,他就有个一。大括号里头添加个二,他就有个二,添加个三,他就有个三,是吧?那我再添加个一 会怎么样?不会重新添加一,为什么?因为元素唯一性。这元素唯一性有什么意义吗?比如说已经收入的元素就不用重复收入,它就是保证唯一的,这个就是差异化嘛。就原组跟列表为什么不一样? 它各有各的用处,有可变的,有不可变的,那列表和原组这种序列有序的,那一定就得有无序的,对不对? 就有元素为一的集合可以清空吗?我们试一下,可列可以调用,清空了之后是个空集, 是个空集,那如果我只想删除某个元素,我说这个集合还是一二、三这三个元素,那么 r 点是吧?哪哪个项?这有一个瑞木瑞木瑞木夫,谁瑞木夫?一个一, 那就删了一 remover 一个二,那就删了二, remover 一个三,那就删了三呗。那 remover 一个四 就 k l, 为什么 k l? 因为你本来是个空级了,你还想删那,那删不了了。列表其实也有这幕副列表其实也有这个幕副。 那我可以 remove 谁, remove 零,那我就删除零, remove 一 就删除一, remove 负一,那就怎么样?删成空列表了,这时候我再 remove 负一就是 value, 因为 x 它不在里边,就删了,跟这个集合删除是一样的 是吧?它们都是能删除,但是如果你想删这个不在这个容器里的东西,那就会报错,那我想不报错行不行?有这么一个方式,叫什么 discard, discard, discard 是 丢弃 discard。 那具体怎么用?我们喊一下救命,看一下他怎么用。 remove an element from a set if it is a member。 如果是成员就删,如果不是成员就啥都不做,那就是说他不会报错是吧?不会报错说 s 等于什么呀?一二三, 他删除一那是肯定没问题的,因为能删除。现在没有一了,删完了我再删一,他也不报错是吧?我删个一百他也不报错,还有和删除相关的吗?那么就是泡 pop, s 也可以 pop, s 直接叫 pop 就 怎么样?就弹出一个东西,弹出一个东西 s 再叫 pop, 又弹出一个东西,是吧?空集我还能 pop 吗?不能 pop, 这 pop 跟这列表是一样的。列表是,比如说一个集合一三二 l 点 pop, 他的 pop 是 有规律的,为什么?因为他是序列有序的,所谓的弹战一定是在这个站顶的位置把二线弹了, 再弹三,再弹一,再弹就崩了,是吧?他们两个是不太一样,因为集合是无序的,所以他弹战的时候他也是无序的, 那列表是有序的,谈战的时候他谈的是最后一个,那谈的是占顶的东西。好,我们总结一下,我们学了一个新的容器,这个容器是无序的,是元素唯一的,它的名字叫集合,它有若干方法可以 添加、删除。那么我们现在呢?了解到序列,序列有序的排列,可修改的序列是列表,不可修改的是原组。 那么无序的它可修改的是集合,不可修改的。有没有这么一个对应的东西呢?我们下次再说 o e z 教程。

晶源清洗是芯片制造中去除杂质的关键步骤。通过使用化学溶液如 sc 一、 sc 二和去离子水去除晶源表面的颗粒、金属离子及自然氧化层,随着制成微缩现多采用先进技术 确保原子级洁净度,清洗可重复数十次,直接决定芯片量率和性能。

大家好,今天我们来讲一道软件测试面试题,列表的增删改查,这是 python 基础里面最常考也是最常用的知识点。首先先简单的说一句,列表就是 python 里面用来存放一堆数据的容器,它是有序的,能改的,还能存放重复的数据。 咱们平时存账号,存测试,用力存各种数据,在实际开发过程中都离不开它。首先是增加元素,常用的有三种方式, append, insert, extend。 我 们结合代码来看一下。首先我们定义了一个列表, 然后我们使用 append 添加一个元素进去,那么它是在列表末尾添加了一个元素。那么我们如果使用 insert 的 方法呢?它就会在下标一的位置插入一个九十九, 那么如果我们想追加到另一个列表,我们可以使用 extend, 它就是在末尾追加了另一个列表,把多个元素加起来。接下来我们来说删除常用的有这四种方法, there, pop, remove, clear。 那 么下面我们结合代码来看一下。首先我们也是定义了一个列表,然后我们可以使用 there 来根据下标进行删除。 我们第二个方法, popo, 它是删除最后一个,并且返回我们这个删除后的这个列表。 第三个 remove, 它是根据原数的值来删除,删除第一个匹配的 第四个 clear, clear 的 话它是清空整个列表,列表还在,只是它变成了空。下面我们再看修改,修改它是非常简单,列表是可变类型,直接通过下标重新赋值就行, 我们可以看到这是一个列表,然后我们可以在这个零的元素把它改成九十九, 然后我们再输出的话,他就变成了九十九。二三。下一个是查找获取列表中的数据,我们获取数据啊常用有三种方法,第一就是通过下标获取从零开始,第二个就是切片 有起始值,结束不长,获取一段数据。第三个就是便利负循环,把所有的元素一个一个取出来,我们可以看一下这段代码, 我们还是定义了一个列表,我们可以通过下标来查,输出的话就是他的零下标,那就输出是十一, 那么我们可以通过切片,切片的话他就是从起始到结束,然后他不长,那么我们通过切片来输出的话,那么他输出的就是二十二,三十三。 我们也可以进行便利,把列表里面的所有数据都拿出来,可以通过否循环进行便利。下面我们简单总结一下,增的话我们可以使用 append insert extend, 删的话可以使用 dial pop remove clear。 改的话我们是直接通过下标进行修改,查的话我们可以通过下标,可以通过切片,也可以通过否循环。 我们这里主要要知道真的话和删的话,他这几种方法的一些用法和区别。其实列表的真删改查没有大家想的那么复杂,核心就是这几个方法,多写两遍代码,多练两次就能熟练的掌握, 不管是面试被问到还是实际开发中用到,都能轻松应对。今天的内容就到这里,大家可以跟着代码来练一练,有问题的话可以评论区留言,咱们下期再见。

大家好,今天我们来说一道软件测试 python 面试题, python 里面的生成器和迭代器,还有 year 的 关键字, 这两个都是 python 面试必考的核心。首先我们先记住三句结论,迭代器它是可以一个一个地取值的对象,遵守迭代协议。生成器它是用函数写的特殊的一个迭代器, 那么关系就是所有的生成器它都是迭代器,但迭代器不一定都是生成器,那么我们详细来看一下迭代器是什么? 迭代器它就是能通过 next 一个一个曲值的对象,就是迭代器。那么怎么创建呢?我们可以把列表、字母串等可迭代的对象使用 delete 来进行转一下,比如说我们这里先定义了一个列表,然后通过 delete 进行转,把它变成了迭代器。 那怎么用呢?我们刚才说了,我们可以使用 nex 取一个,它会消耗一个,那么在这里面我们可以看到它里面是有三个数值, 那么我们通过 nex 取第一个,取第二个,取第三个,那如果我们当再取第四个的时候,它就会报错,因为它是只能向前取,不能向后退,而且取完就空了,所以说它比较节约内存。那么我们再来看一下生成器, 生成器的话,它是用函数加 year 的 关键字写出来的迭代器,它叫做生成器, 那么它有两种写法,第一种就是通过 x for x in range 三,那么第二种我们也是最常用的,可以使用 year 的 生成器,我们这里写了一个函数,下面有 year 的 一, year 的 二, year 的 三,然后我们对它进行调用, 他的特点就是懒加载,我们用一个他才会生成一个,所以他超级省内存,但是他只能便利一次,他的本质也是一个迭代器,下面我们一张图来看一下他们的区别。迭代器他遵守迭代协议的对象, 我们可以通过 delete 来进行创建,那么他比较节约内存。如果生成器的话,他是一个特殊的迭代器,通过小括号或者是一二的进行创建, 那么他比较强大,就是可暂停,可恢复,相对来说他是最省内存的。那么我们下面再说一下一二的是什么?一二的他就是函数版的暂停加返回, 那么如果遇到一二的,那就是暂停函数,然后返回值,下一次通过 next, 然后他会从暂停处继续。我们看一下这个代码,首先这个方法里面我们先输出了一二的一,然后暂停返回了,然后再输出 继续,然后再通过一二的二,那么我们调用这个方法的时候,我们可以通过 next 进行调用。第一个那它就是开始一,然后执行到暂停的时候它就会停止,然后 next 的 话它会从 暂停处继续。那么第二个词在调用的时候,它就输出的应该是继续,然后是 r。 如果我们在面试过程中遇到了,我们可以这样说,迭代器它是一个可以逐个取值的对象,通过 delete 来创建生成器是一个特殊的迭代器,它是通过小括号或者是 er 的 创建。 生成器,可以暂停执行更灵活,内存占用最小。我们下面简单总结一下迭代器,它是一个可迭代的对象,通过 leader, 然后能用 nex 生成器的话,他是小括号,一二的他是一个特殊的迭代器,他们的共同点就是省内存一次性只能向前不能回头。那在日常的开发处理大量数据,你会主动用生成器节约内存吗?还是一直习惯使用列表评论区?大家可以来聊一聊我们的写法。

每天一个技术点,上一期视频讲到考拉培训下的各个实现都各有特性,对数据的处理方式各不相同,所以不好定义直接访问数据的方法。为了兼顾各种类的特性,同时又能提供访问数据的共性, action 选择了迭代器模式。今天我们就来讲讲这个迭代器。加瓦中的迭代器是一个接口,名为 it reader。 它主要有两个抽象方法,让纸类实现还是 next 方法用来判断还有没有数据可供访问。 next 方法用来访问结合的下一个数据。 这两个方法不像利斯特德盖的方法那样依赖索引获取数据,也不像 q 的破方法那样依赖特定规则获取数据。迭代谢的方法将通用性做到了极致,可以访问不同特性的结合数据,而 无需关心他们的内部实现。迭代器的使用方式特别像油标卡尺,每访问一个数据,油标就会前进一格,就这样不断将油标前移,从而达到了数据便利的效果。这里要特别注意,集合并不是直接去实现 eat ritter 接口,而是实现的 eat riobo, 借口 用这个 ethelube 定力的方法去返回当前集合的迭代器。 connection 就继承了 itelube 接口,所以 connection 体系的结合都得按照这种方式 返回。迭代器一共大家访问数据,为什么要通过这种方式来使用迭代器呢?因为集合直接实现迭代器的话,那别人调用了当前集合的 next 方法,就会影响到你 便利数据。你本来希望从头开始便利所有数据,然而别人可能已经将数据便利完了,你就拿不到数据了,而通过实现 exluber 这种方 方式,就可以每次返回新的迭代器,不同迭代器之间便利数据时会被影响,所以这里也就能看出迭代器是具有独立性和隔离性的。有人可能会问,那你拿迭代器在便利的同时 集合在增加或删除数据呢?不也会影响到你迭代器的便利吗?加瓦标准库针对这种情况做了处理,这个我后面会出一期视频专门讲解。继续说回迭代器本身。迭代器除了有屏蔽集合间不同特性之外,在加瓦中还有一个好处就是如果你实现了 aw 的接口,并按要求 返回了迭代器,那你就可以使用佛一起循环去直接便利数据。也就是说你可以省略孩子 next 和 next 操作。其实佛一起循环是加瓦的一个语法堂,反编译之后就会发现他用的就是迭代器。总结一下,一个 rabe 用来 返回迭代器,实现了该接口的类,就算是可迭代对象了,可以直接使用佛一起循环访问数据。 eater ritter 就是迭代器用来便利集合的数据,并无需关心集合的内部实现佛一起循环用的就是迭代器。跟着螃蟹哥技术不翻车!

哈喽,我是月半,今天教大家如何创建图标 skill, 并用 skill 一 键输出这样风格统一的图标。打开 lower, 拖入你喜欢的图标风格,并在输入框中输入这段提示词,点击发送之后点击保存为我的 skill, 在下方 skill 中就能找到我们刚刚创建的图标 skill, 我 们输入多个图标名称,就能一次得到多个风格统一的图标。最后把图标拖入到 pdf, 点击下方的 remote background, 进行最后的布局和排版。

大家好,我们今天继续学习 partq, 若今天我们要学习的是把工作不中不同的表汇总到一起,如这边我们需要把财务、客服、销售三张表汇总到这一起,并且把 部门名称也就是我们的表明称给他也提取出来。好,我们进入抛 q 的编辑器去看一下,我们从一颗色工作表中选择一颗色工作表进入, 随便选择一个转换数据。为什么随便选择呢?我们这里是要 做一步退后,我们要把这个导航删掉。好,接下来我们先添加一个步骤,将其重运为保留的, 我们这里需要保留的是 内幕和 耐磨和数据的两个带头的两个列,我们选择太波点三十个点,三十个是靠那么长的数 逗号,这里我们是选择我们需要保留的数据,这里是艾特也可以, 还是喷到这里来吧。艾特。好,我们这里需要保留这两个数据。接下来我们再轻轻插入一个步骤, 这里我们从命名为添加美,我们把啊对的这个字段相当于是重复一遍点 a 的科的木函数。 好,第一参数,保留列第二参数。新,这新列的这段名,我们这里把它命名为数据 比赛 三棵树,一起 一起带头。好,加个花回来,我们新的也得添加。好了,接下来我们对新添加的, 我们对这这列里面的所有的表自动给他进行一个提升标题。 开播点, promote heat 函数,加个括号回来。 好,我们这里可以看见我们已经把三个标的标题都做了一个 都给他提升的标题。接下来我们做一个内透视其他列 开播点安排 boss 阿拉克姆斯函数,第一参数表第二参数,我们需要保留的列姓名。 第三参数是 我们这个自断把它立透时候形成了这一列,它的一个我们给它的一个命名,这里我们将写命名为月份。 第四参数是我们直的一个命名,这上面将其命名为分数。好,加一个括号回来看一下。 好,这里我们可以看见我们已经把这些表命已经做了立透式了,我们再新加一列,将其重命名为删除列, 这里我们用到胎宝典微木科的木函数,科的木子函数 为木木考了木子函数,因为他可能删除的不止一位啊,我们这里的话删除的是呆头的这一位。 抓个括号回来, 接下来再添加一粒真题,命名为扩展。 好,我们这里用到台波点 expand table columns 函数科鲁木函数。一开始 nikespan tablecome 第一参数是什么都表,第二参数是我们要去扩展哪一 列的数据,我们这里是要把数据这一列的数据进行一个扩展。逗号,第三棵树是我们要从这里扩展出来 哪些猎来,我们这里是姓名 月份, 还有一个分数,这里其实还有个第四参数及我们扩展的这些。对,我们给他重新命名,但是我们这里你不需要更改了。接下来我们再做一个透视 开包点拍,我这是个数据表的一个透视。第一参数表第二参数,我们要对哪一念 做一个不重复提取,我们这里使用的是扩展的月份,第三次的话就是我们这一个 不重复提取,这一个自断他的自断名月份。第四参数是我们的一个对哪个字值进行透视,这两个是分数。 第五参数是我们对他做一个什么样的聚合,我们这里是求和历史的点。上回车,好了,我们已经把它做透视了,接下来我们再做一个排序, 因为他这里的命名不符合我们的习惯,你看他,这里是三月、二月、一月, 我们需要按照一月、二月、三月的格式去做一个排序,我们这里用推波点 vo 的,靠,那么次函数,第一参数是我们的表,这个参数是我们的一个。 呃,这些字段我们要按照什么样的一个顺序排序?好,我们这里是按照内幕姓名、音乐、 鳄鱼, 三月, 好,我们排序已经排好了,接下来括号回来,好,这里我们看见已经排好了,接下来我们关闭并上载字,我们需要的表中,这里我们把它加载到,我现在有工作表吧,这里, 好,这里我们可以看见我们的,呃,这个表做的已经跟目标表是一样一样的了。好,今天我们就学习到这里,谢谢大家。