最簡單的思路就是:
ids=[
1,2,
3,3,
4,2,
3,4,
5,6,
1]news_ids=
forid
inids:if
idnot
innews_ids
:news_ids.(
id)print
news_ids
這樣也可行,但是看起來不夠爽。
另外乙個解決方案就是用set:
ids=[
1,4,
3,3,
4,2,
3,4,
5,6,
1]ids=
list
(set
(ids
))
這樣的結果是沒有保持原來的順序。
最後通過這種方式解決:
ids=[
1,4,
3,3,
4,2,
3,4,
5,6,
1]news_ids
=list
(set
(ids
))news_ids
.sort
(key
=ids
.index
)# 感謝網友:@magic 指正。
文章一開始就提到itertools.grouby, 如果不考慮列表順序的話可用這個:
ids=[
1,4,
3,3,
4,2,
3,4,
5,6,
1]ids.
sort
()it
=itertools
.groupby
(ids
)fork,
ginit:
print
k
關於itertools.groupby的原理可以看這裡:
in[5
]:ids=[
1,4,
3,3,
4,2,
3,4,
5,6,
1]in[
6]:func
=lambdax,
y:xif
yinxel***+
[y]in
[7]:reduce
(func,[,
]+ids)
out[7]:
[1,4
,3,2
,5,6
]
上面是我在ipython中執行的**,其中的 lambda x,y:x if y in x else x + [y] 等價於 lambda x,y: y in x and x orx+[y]
。 思路其實就是先把ids變為[, 1,4,3,......] ,然後在利用reduce的特性。reduce解釋參看這裡:
python中對list去重的方法
lista 1 2 1 2 3 4 2 第一種print set lista 輸出型別為 class set 因為型別是無序集合 所以每次順序都會變輸出結果為 順序不一致 且型別發生改變 第二種print list set lista 輸出型別為 class list 因為是把set強轉成list ...
對List中物件的去重
今天專案中遇到了乙個對list中物件去重的問題。首先對於我們自己系統中的物件我們只要重寫該物件的 equal 和 hashcode 即可 利用物件中的能夠唯一確定物件的屬性 但是我遇到的不是本系統的物件,而是另乙個系統中的物件,我本身是無法對其進行重寫的。我的處理方法是遍歷list,利用map un...
對List中物件的去重
今天專案中遇到了乙個對list中物件去重的問題。首先對於我們自己系統中的物件我們只要重寫該物件的 equal 和 hashcode 即可 利用物件中的能夠唯一確定物件的屬性 但是我遇到的不是本系統的物件,而是另乙個系統中的物件,我本身是無法對其進行重寫的。我的處理方法是遍歷list,利用mapniq...