帶你分析 Python 刪除相同元素遇到的問題(附解決方法及練習題)

作為初學者,我們往往使用下面的代碼刪除相同元素,這樣做往往會遇到相同元素并沒有被完全刪除的問題。注意:這種情況存在于兩個相同元素相鄰的時候
至于為什么會出現(xiàn)這種情況,我們可以在上面的代碼中加入 print 語句看看取出元素的情況
由此,我們不能看出 for 循環(huán)中跳過了一次可樂的選取。原因在于:剛開始,for 循環(huán)的開始下標為 0,取到第一個可樂并進行刪除。此時,food_list 縮短,原本的第二個可樂下標由 1 變?yōu)?0,即 ['可樂', '薯片']。但是 for 循環(huán)繼續(xù)進行,下標由上次的 0 變?yōu)榱?1,取到元素的也就會是薯片,所以出現(xiàn)了漏刪的現(xiàn)象

知道了發(fā)生的原因,我們只需要控制每次刪除時,下標不變即可。就像上面分析的,刪除完第一個可樂,繼續(xù)保持下標為 0,這樣就能保證下次還能取到第二個可樂。為此,我們使用 while 循環(huán)進行控制。由此,引出解決方法 1:
同樣的提供兩種更優(yōu)秀的解決方法:
解決方法 2:本質就是判斷可樂在不在列表中,如果在就執(zhí)行 remove 刪除可樂,繼續(xù)循環(huán)判斷可樂在不在列表中,如果在就繼續(xù)執(zhí)行刪除,直到可樂不在列表中,循環(huán)退出
解決方法 3:這種方法本質上是創(chuàng)建了一個新的列表 ['薯片', '可樂', '可樂'],這個列表被用于索引。而原來的列表 ['可樂', '可樂', '薯片'] 將被用于刪除,這樣即使原來的列表遭到刪除,也不會影響到索引列表
好了,理解了上面的方法,接下來我將出一道題目:首先,給你一個列表 [4, 37, 51, 50, 8, 95] 請刪除其中不小于 50 的數(shù),答案是 [4, 37, 8]
請在評論區(qū)給出你寫的答案,讓大家?guī)湍闩?。本期專欄就到此結束了,這里不分享基礎知識點,我只會繼續(xù)分享一些進階的知識與小技巧