首頁  >  文章  >  Python列表怎麼去重

Python列表怎麼去重

百草
百草原創
2023-06-14 13:25:0713106瀏覽

Python列表去重的方法:1、for迴圈實作列表去重,此方法去重後原順序不變;2、列表推導式去重,此方法去重後原順序不變; 3.集合轉換函數「set()」實作列表去重,其原理是同一個集合的元素之間是不允許重複的;4、新建字典方式實作列表去重,其原理是字典的「鍵」是不允許重複的;5、刪除清單中存在重複的數據,只要存在重複,全部刪除。

Python列表怎麼去重

本教學作業系統:windows10系統、Python 3.11.2版本、DELL G3電腦。

Python列表去重的方法:
一、使用for迴圈實作清單去重

此方法去重後,原始順序保持不變。

# for循环实现列表去重
list1 = ['a', 'b', 1, 3, 9, 9, 'a']
list2 = []
for l1 in list1:
    if l1 not in list2:
        list2.append(l1)
print(list2)

結果:['a', 'b', 1, 3, 9]

二、使用列表推導式去重








##此方法去重後,原順序不變。

# 使用列表推导式去重
list1 = ['a', 'b', 1, 3, 9, 9, 'a']
res = []
[res.append(i) for i in list1 if i not in res]
print(res)

結果:['a', 'b', 1, 3, 9]

三、使用集合轉換函數set()實現列表去重

原理:同一個集合的元素之間是不允許重複的

# set()列表去重
list1 = ['a', 'b', 1, 3, 9, 9, 'a']
list2 = list(set(list1))
print(list2)
結果:[1, 3, 9, 'b', 'a']
問題:使用set()函數去重後,會自動排序,則原始列表的順序會發生改變
解決辦法有2種:

第一種方法,使用sort()方法

# # 第一种方法,sort()
list1 = ['a', 'b', 1, 3, 9, 9, 'a']
list2 = list(set(list1))
list2.sort(key=list1.index)
print(list2)

結果:['a ', 'b', 1, 3, 9]

註:sort()方法沒有傳回值,對列表元素進行原地排序

第二種方法,使用sorted()函數###
# 第二种方法,sored()
list1 = ['a', 'b', 1, 3, 9, 9, 'a']
list2 = sorted(list(set(list1)), key=list1.index)
print(list2)
# ##結果:['a', 'b', 1, 3, 9]###註:python內建函數sorted()函數傳回新的列表,並且不會對原列表做任何修改######## ##四、使用新字典方式實現列表去重######原理:字典的"鍵"是不允許重複的###此方法去重後,原來順序保持不變。 ###
# 使用新建字典实现列表去重
list1 = ['a', 'b', 1, 3, 9, 9, 'a']
dic = {}
dic = dic.fromkeys(list1).keys()
print(list(dic))
###結果:['a', 'b', 1, 3, 9]#########五、刪除清單中存在重複的資料######上面的4種去重方法,都是保留一個,刪除其他###下面這種方法則是,只要存在重複,一個都不保留###
# 删除存在重复的值,不保留
list1 = ['a', 'b', 1, 3, 9, 9, 'a']
list2 = [i for i in list1 if list1.count(i) == 1]
print(list2)
###結果:['b', 1, 3]# #####以上就是關於清單去重的5種方法,可以依照需求選擇對應的方法。 ###

以上是Python列表怎麼去重的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn