刪除列表裡面重複的值的7種方法

2022-05-17 01:59:03 字數 1976 閱讀 5029

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遍歷的還是之前的索引長度,會導致索引超過範圍而報錯

# 版本三: 通過遍歷建立的切片來刪除原列表

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:

print(lst) # 沒有問題,也能保留原有順序,但是建立了新列表

# 版本五: 通過索引倒著刪除

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.remove(l1[el])

print(l1) # 沒有問題,但是不能保留原有順序

# 版本六: 通過遞迴函式刪除

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) # 每次開闢乙個新函式,判斷上次被刪除了乙個元素後的列表

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)

列表裡的空值與重複值處理

今天爬了韓語考試網的東西。結果之前訪問太多被封了ip,後來用了免費 也不好使,最後請另外乙個朋友幫我安排了,設定了time.sleep 5 就沒被封ip了。由於爬下來的東西實在是亂,就稍微處理了一下。遇到兩個問題 一 有乙個list裡面有空值 不知道這樣說合適不合適 比如list 1 3 list ...

前端應用 Vue 介紹三種方法刪除商品列表裡記錄

上一節 我們只是能新增 記錄,那如何刪除呢,一共有兩個方法 乙個是利用 陣列的 some 方法,乙個是 findindex 方法。第一 先確認 刪除記錄的id 第二 在刪除記錄的 button,繫結乙個刪除的方法,並把id 當作引數進去。第三 寫刪除方法,刪除方法 首先根據 傳入的id 找到陣列物件...

python 四種方法刪除列表裡所有空格項

首先,我們來隨便寫乙個帶空格的列表 list1 122 2333 3444 422 54 相信已經有人嘗試過,諸如以下的方式去刪掉空格,例如 coding utf 8 for i in list1 if i list1.remove print list1 但是結果你會發現是這樣的,它總是不能完全的...