好程式設計師Python培訓分享列表去重中的copy問題
列表去重中的copy 問題有多少的小夥伴知道或者瞭解呢 ? 不清楚的小夥伴也不要著急,本篇文章 好程式設計師 Python 培訓小編就給讀者們分先一下列表去重中的 copy 問題,希望對讀者們有所幫助。
一般而言,列表去重無非那幾種方法:
第一種,利用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)
# 執行結果
1
[3, 4, 1, 2, 2, 2, 2, 1, 2]
4
[3, 4, 1, 2, 2, 2, 2, 1, 2]
1
[3, 4, 2, 2, 2, 2, 1, 2]
2
[3, 4, 2, 2, 2, 1, 2]
2
[3, 4, 2, 2, 1, 2]
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)
# 執行結果
1
[3, 4, 1, 2, 2, 2, 2, 1, 2]
3
[3, 4, 1, 2, 2, 2, 2, 1, 2]
4
[3, 4, 1, 2, 2, 2, 2, 1, 2]
1
[3, 4, 2, 2, 2, 2, 1, 2]
2
[3, 4, 2, 2, 2, 1, 2]
2
[3, 4, 2, 2, 1, 2]
2
[3, 4, 2, 1, 2]
2
[3, 4, 1, 2]
1
[3, 4, 1, 2]
2
[3, 4, 1, 2]
Process finished with exit code 0
只是加了一個copy() 方法,就避免了元素位置因為刪除而移動的問題。 copy() 方法是淺複製,它將列表的值都複製了出來,且生成了一個新的空間儲存值( copy() 方法後新列表的 id 值和原來的列表 id 值不一樣),所以下面的列表刪除元素後元素的變動不影響複製後的列表值。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2732681/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師Python培訓分享Python爬蟲工具列表大全程式設計師Python爬蟲
- 好程式設計師Python培訓分享Python程式設計師面試技巧程式設計師Python面試
- 好程式設計師Python培訓分享四款Python程式庫程式設計師Python
- 好程式設計師Python培訓分享numpy簡介程式設計師Python
- 好程式設計師Python培訓分享Python系列之字串的使用程式設計師Python字串
- 好程式設計師Python培訓分享Python如何呼叫RPC介面程式設計師PythonRPC
- 好程式設計師Python培訓分享Python配置gRPC環境程式設計師PythonRPC
- 好程式設計師Python培訓分享Python異常處理程式設計師Python
- 好程式設計師Python培訓分享入門之元組列表字典詳解程式設計師Python
- 好程式設計師Python培訓分享Python系列之分支結構程式設計師Python
- 好程式設計師Python培訓分享Python爬蟲相關框架程式設計師Python爬蟲框架
- 好程式設計師Python培訓分享學Python要注意什麼程式設計師Python
- 好程式設計師Python培訓分享如何寫Python裝飾器程式設計師Python
- 好程式設計師Python培訓分享Python程式設計中常見的異常處理程式設計師Python
- 好程式設計師Java培訓分享Java中級面試題合集程式設計師Java面試題
- 好程式設計師web前端培訓分享小白學web常見的問題程式設計師Web前端
- 好程式設計師Python培訓分享開發工具推薦程式設計師Python
- 好程式設計師Python培訓分享基礎入門Django程式設計師PythonDjango
- 好程式設計師Python培訓分享簡述fetchone()函式程式設計師Python函式
- 好程式設計師Python培訓分享For迴圈用法詳解程式設計師Python
- 好程式設計師Java培訓分享BigDecimal的用法程式設計師JavaDecimal
- 好程式設計師Java培訓分享20個Java程式設計師基礎題程式設計師Java
- 好程式設計師Python培訓分享機器學習面試題一程式設計師Python機器學習面試題
- 好程式設計師Java培訓分享Java程式設計技巧程式設計師Java
- 好程式設計師Java培訓分享SpringBoot -YAML程式設計師JavaSpring BootYAML
- 好程式設計師web前端培訓分享Vue面試題程式設計師Web前端Vue面試題
- 好程式設計師Java培訓分享Mybatis面試題集合程式設計師JavaMyBatis面試題
- 好程式設計師Python培訓分享Python系列之迴圈結構程式設計師Python
- 好程式設計師Python培訓分享Python入門基礎知識程式設計師Python
- 好程式設計師Python培訓分享Python生成器與迭代器程式設計師Python
- 好程式設計師Python培訓分享Python之初識網路爬蟲程式設計師Python爬蟲
- 好程式設計師Python培訓分享網路爬蟲的分類程式設計師Python爬蟲
- 好程式設計師Python培訓分享python中爬蟲常用到的正規表示式程式設計師Python爬蟲
- 好程式設計師Java培訓分享Spring Ioc的原理程式設計師JavaSpring
- 好程式設計師Java培訓分享Java程式設計師技能提升指南程式設計師Java
- 好程式設計師Web前端培訓分享jQuery面試題梳理程式設計師Web前端jQuery面試題
- 好程式設計師Java培訓分享maven-概述程式設計師JavaMaven
- 好程式設計師Python培訓分享Python中程式和執行緒詳解程式設計師Python執行緒