一般而言,列表去重無非那幾種方法。
第一種,利用set()沒有重複值的特性去重,簡單,但是無序。
第二種,判斷迴圈的元素是否在新列表中以此來去掉重複值,可以保持原來的順序。
第三種,迴圈遍歷,判斷當前元素的個數是否大於1,然後在刪除當前元素(需注意刪除元素後列表的變化),無序。
今天主要說的就是第三種方法了。
示例**:
list1 = [1,3,4,1,2,2,2,2,1,2]
for item in list1:
print(item)
# 統計元素的個數
count = list1.count(item)
# 如果個數大於1,就刪乙個
if count > 1:
list1.remove(item)
print(list1)
#執行結果
[3, 4, 1, 2, 2, 2, 2, 1, 2]
[3, 4, 1, 2, 2, 2, 2, 1, 2]
[3, 4, 2, 2, 2, 2, 1, 2]
[3, 4, 2, 2, 2, 1, 2]
[3, 4, 2, 2, 1, 2]
[3, 4, 2, 1, 2]
process finished with exit code 0
看最後結果,就知道這次去重失敗了,是因為沒有注意元素位置移動的問題。那請仔細看下面的**有什麼不同:
list1 = [1,3,4,1,2,2,2,2,1,2]
for item in list1.copy():
print(item)
count = list1.count(item)
if count > 1:
list1.remove(item)
print(list1)
#執行結果
[3, 4, 1, 2, 2, 2, 2, 1, 2]
[3, 4, 1, 2, 2, 2, 2, 1, 2]
[3, 4, 1, 2, 2, 2, 2, 1, 2]
[3, 4, 2, 2, 2, 2, 1, 2]
[3, 4, 2, 2, 2, 1, 2]
[3, 4, 2, 2, 1, 2]
[3, 4, 2, 1, 2]
[3, 4, 1, 2]
[3, 4, 1, 2]
[3, 4, 1, 2]
process finished with exit code 0
只是加了乙個copy()方法,就避免了元素位置因為刪除而移動的問題。copy()方法是淺拷貝,它將列表的值都拷貝了出來,且生成了乙個新的空間儲存值(copy()方法後新列表的id值和原來的列表id值不一樣),所以下面的列表刪除元素後元素的變動不影響拷貝後的列表值。
最後告訴你的是,
零基礎學習python肯定難,python的專業程度本身就不簡單,學習這事本來就是一件非常煎熬的事情,人都不願意學習,可是沒辦法,為了生存掌握乙個技能,你必須學。自己乙個人努力拼搏可能最終短期見不到效果容易重複走彎路,而與千人py學習者一起努力,相當於一千個人在幫你。歡迎在qq上加入我們學習聚集群:816572891。
web無序列表去掉點 列表去重中的copy問題
一般而言,列表去重無非那幾種方法。第一種,利用set 沒有重複值的特性去重,簡單,但是無序。第二種,判斷迴圈的元素是否在新列表中以此來去掉重複值,可以保持原來的順序。第三種,迴圈遍歷,判斷當前元素的個數是否大於1,然後在刪除當前元素 需注意刪除元素後列表的變化 無序。今天主要說的就是第三種方法了。示...
python中列表去重
li 2,5,4,7,2,1,3,2,6,7 print 方法一列表追加 center 40,list1 for i in li if i not in list1 print list1 print 推導式實現 center 40,list2 print list2 print 方法二利用字典鍵唯...
python中列表去重
列表去重 定義乙個函式 def remove element m list 將列表 10,1,2,20,10,3,2,1,15,20,44,56,3,2,1 去除重複元素 def remove element m list 定義乙個空列表 new list 迴圈判斷某個元素是不是在新的列表中,如果在...