日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python去重复功能_消除Python列表重复的几种方法,python,去,一些

發布時間:2023/12/2 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python去重复功能_消除Python列表重复的几种方法,python,去,一些 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

做Python123平臺上的列表去重題,復述題目:

去除列表中的重復元素,考慮以下幾種情況:

l = [1, 1, 2, 3]

l = [[1], [1], [2], [3]]

l = [3, 2, 1, 1]

原文鏈接:

14025

總結一下網上的方法和我自己想的方法:

不考慮列表去重之后的元素順序

return list(set(l))

由于集合元素的唯一性,集合可以去重,但是集合的元素是無序的,轉換成列表之后原來的列表的元素順序會變化,在評判時不通過。并且第二項還會報錯

TypeError: unhashable type: 'list'

考慮到列表類型元素unhashable的問題,可以先把每個元素轉換成字符串,去重之后再去掉引號

a = [str(element) for element in l]

b = list(set(a))

duplicatedList = [eval(element) for element in b]

return duplicatedList

考慮到元素順序問題,可以這樣寫(參考鏈接:

鏈接

duplicatedList.sort(key=l.index)

return duplicatedList

列表的index函數的用法是

list.index(x[, start[, end]])

x --- 要查找的元素

start --- 查找開始的位置

end --- 查找結束的位置

sort方法的key參數的意義是主要是用來進行比較的元素,只有一個參數,具體的函數的參數就是取自于可迭代對象中,指定可迭代對象中的一個元素來進行排序。

我的理解是,從去重之后的列表duplicatedList中取出一個元素,在l中找第一次出現的位置(索引),以這個索引為依據排序duplicatedList的元素。語法上等效于

duplicatedList.sort(key=lambda x:l.index(x))

這僅是我個人的理解,原作者沒解釋。如果我說的不對歡迎討論。

使用字典的fromkeys方法,第二項報unhashable錯誤

參考:

鏈接

# fromkeys 以列表的元素作為字典的鍵,把所有的鍵都賦同樣的值(如果不指定則默認賦值為None)

lst1 = []

dct = dict.fromkeys(l)

# 對字典的每一個鍵,字典的鍵是唯一的

for n in dct:

lst1.append(n)

return lst1

或者

return list(dict.fromkeys(l))

以下三種方法對于元素unhashable的情況依然有效

枚舉l的每個元素,如果沒在新列表里出現,則加在新列表的末尾,否則(重復了)不追加

new_lst = []

for v in l:

if v not in new_lst:

new_lst.append(v)

return v

使用enumerate函數枚舉

平臺的官方答案之一

#更簡潔的寫法是

return [value for index, value in enumerate(l) if value not in l[:index] ]

#其意義是枚舉列表每個元素(設索引為index,值為value),

#如果value沒有在l[0:index]中出現過(沒重復)則value加入到新列表中,如果重復就不追加

#如果還是看不懂,看下面的拆解版

r = []

for idx, value in enumerate(l):

if value not in l[:idx]:

r.append(value)

return r

基于索引遍歷列表

r = []

for idx in range(len(l)):

if l[idx] not in r:

#或者if l[idx] not in l[:idx]:

r.append(l[idx])

# 也可寫作

return [l[idx] for idx in range(len(l)) if l[idx] not in l[:idx]]

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的python去重复功能_消除Python列表重复的几种方法,python,去,一些的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。