Python刪除列表中重復元素的七種方法舉例
更新時間:2023年03月31日 11:47:48 作者:十九1919
我們在面試中很可能遇到給定一個含有重復元素的列表,刪除其中重復的元素,下面這篇文章主要給大家介紹了關于Python刪除列表中重復元素的七種方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
前言
嗨嗨,大家晚上好 ~ 又來給你們分享小妙招啦
在python列表有重復元素時,可以有以下幾種方式進行刪除
覺得不錯的話,趕緊學起來用用吧 !
直接遍歷列表刪除
l1 = [1, 1, 2, 2, 3, 3, 3, 3, 6, 6, 5, 5, 2, 2]
for el in l1:
if l1.count(el) > 1:
l1.remove(el)
print(l1)# 會漏刪,因為刪除一個元素后,后面的元素向前補位,導致緊跟的一個元素被跳過.
通過遍歷索引刪除
l1 = [1, 1, 2, 2, 3, 3, 3, 3, 6, 6, 5, 5, 2, 2]
for el in range(len(l1)): # 此時len(l1)已經確定,不會隨著l1后面的變化而變化
if l1.count(l1[el]) > 1:
l1.remove(l1[el])
print(l1) # 會報錯,因為刪除元素后導致l1的長度變短了,但是for遍歷的還是之前的索引長度,會導致索引超過范圍而報錯
通過遍歷創(chuàng)建的切片來刪除原列表
l1 = [1, 1, 2, 2, 3, 3, 3, 3, 6, 6, 5, 5, 2, 2]
for el in l1[:]:
if l1.count(el) > 1:
l1.remove(el) # 沒有問題,可以去重,但是無法保留原有的順序
print(l1)
用新列表記錄需要保留的元素
l1 = [1, 1, 2, 2, 3, 3, 3, 3, 6, 6, 5, 5, 2, 2]
lst = []
for el in l1:
if lst.count(el) < 1:
lst.append(el)
print(lst) # 沒有問題,也能保留原有順序,但是創(chuàng)建了新列表
通過索引倒著刪除
l1 = [1, 1, 2, 2, 3, 3, 3, 3, 6, 6, 5, 5, 2, 2]
for el in range(len(l1)-1, -1, -1):
if l1.count(l1[el]) > 1:
l1.pop(el) # 沒有問題,且保留原順序
# l1.remove(l1[el]) # 沒有問題,但是不能保留原有順序
# del l1[el] # 這樣則會保留原有順序,小伙伴可以想一想為什么
print(l1)
通過遞歸函數(shù)刪除
l1 = [1, 1, 2, 2, 3, 3, 3, 3, 6, 6, 5, 5, 2, 2]
def set_lst(lst):
for el in lst:
if lst.count(el) > 1:
lst.remove(el)
set_lst(lst) # 每次開辟一個新函數(shù),判斷上次被刪除了一個元素后的列表
else: # 直到最后,列表里的元素都是一個,運行了else
return lst
print(set_lst(l1)) # 因為是從前面開始刪除的,所以不保留原有順序
'''
[1, 1, 2, 2, 3, 3, 3, 3, 6, 6, 5, 5, 2, 2]
[1, 2, 2, 3, 3, 3, 3, 6, 6, 5, 5, 2, 2]
[1, 2, 3, 3, 3, 3, 6, 6, 5, 5, 2, 2]
[1, 3, 3, 3, 3, 6, 6, 5, 5, 2, 2]
[1, 3, 3, 3, 6, 6, 5, 5, 2, 2]
[1, 3, 3, 6, 6, 5, 5, 2, 2]
[1, 3, 6, 6, 5, 5, 2, 2]
[1, 3, 6, 5, 5, 2, 2]
[1, 3, 6, 5, 2, 2]
[1, 3, 6, 5, 2] return lst = [1, 3, 6, 5, 2]
'''
毫無疑問set()是最方便的
l1 = [1, 1, 2, 2, 3, 3, 3, 3, 6, 6, 5, 5, 2, 2] lst = list(set(l1)) print(lst)
總結
到此這篇關于Python刪除列表中重復元素的七種方法舉例的文章就介紹到這了,更多相關Python刪除列表重復元素內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python實現(xiàn)合并多個list及合并多個django QuerySet的方法示例
這篇文章主要介紹了python實現(xiàn)合并多個list及合并多個django QuerySet的方法,結合實例形式分析了Python使用chain合并多個list以及合并Django中多個QuerySet的相關操作技巧,需要的朋友可以參考下2019-06-06
Python+OpenCV實現(xiàn)單個圓形孔和針檢測
這篇文章主要為大家詳細介紹了如何通過Python+OpenCV實現(xiàn)單個圓形孔和針檢測功能,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下2022-10-10
Python+pyaudio實現(xiàn)音頻控制示例詳解
PyAudio?是語音處理的?Python?庫,提供了比較豐富的功能。本文將利用pyaudio控制指定設備,實現(xiàn)錄制音頻、采集音頻流、播放音頻,感興趣的可以了解一下2022-07-07

