带你分析 Python 删除相同元素遇到的问题(附解决方法及练习题)

2023-07-10 12:30:09


(资料图片)

作为初学者,我们往往使用下面的代码删除相同元素,这样做往往会遇到相同元素并没有被完全删除的问题。注意:这种情况存在于两个相同元素相邻的时候

至于为什么会出现这种情况,我们可以在上面的代码中加入 print 语句看看取出元素的情况

由此,我们不能看出 for 循环中跳过了一次可乐的选取。原因在于:刚开始,for 循环的开始下标为 0,取到第一个可乐并进行删除。此时,food_list 缩短,原本的第二个可乐下标由 1 变为 0,即 ['可乐', '薯片']。但是 for 循环继续进行,下标由上次的 0 变为了 1,取到元素的也就会是薯片,所以出现了漏删的现象

知道了发生的原因,我们只需要控制每次删除时,下标不变即可。就像上面分析的,删除完第一个可乐,继续保持下标为 0,这样就能保证下次还能取到第二个可乐。为此,我们使用 while 循环进行控制。由此,引出解决方法 1:

同样的提供两种更优秀的解决方法:

解决方法 2:本质就是判断可乐在不在列表中,如果在就执行 remove 删除可乐,继续循环判断可乐在不在列表中,如果在就继续执行删除,直到可乐不在列表中,循环退出

解决方法 3:这种方法本质上是创建了一个新的列表 ['薯片', '可乐', '可乐'],这个列表被用于索引。而原来的列表 ['可乐', '可乐', '薯片'] 将被用于删除,这样即使原来的列表遭到删除,也不会影响到索引列表

好了,理解了上面的方法,接下来我将出一道题目:首先,给你一个列表 [4, 37, 51, 50, 8, 95] 请删除其中不小于 50 的数,答案是 [4, 37, 8]

请在评论区给出你写的答案,让大家帮你批改。本期专栏就到此结束了,这里不分享基础知识点,我只会继续分享一些进阶的知识与小技巧

标签:

x 广告
x 广告

Copyright ©  2015-2022 东方文旅网版权所有  备案号:沪ICP备2020036824号-8   联系邮箱:562 66 29@qq.com