python的list去重
『壹』 python如何實現刪除某list中所有重復出現的元素
1. 使用內置函數set
lists = [1,1,2,3,4,6,6,2,2,9]
lists = list(set(lists))
先將列表轉換為集合,因為集合是不重復的,故直接刪除重復元素,而且輸出結果為排序後的
『貳』 python 列表多個元素如何配對去重呢
每次從列表中取出兩個元素,如果第二個元素不在輸出列表,就將這兩個元素添加到輸出列表。
source = ["a","1","b","1","c","2","d","3","e","4","c","3"]
out = []
for e in zip(source[0::2],source[1::2]):
....if e[1] not in out:
........out = out + list(e)
print(out)
『叄』 Python數字列表去重,如何簡單的既去重還能按原來的順序輸出
Python數字列表去重,還能按原來的順序輸出.
第一種方法
alist = [1, 2, 2, 4, 4, 6, 7]
b = []
for i in alist:
if i not in b:
b.append(i)
print(b)
源代碼(注意源代碼的縮進)
『肆』 Python如何對列表進行去重
1.使用set的特型,python的set和其他語言類似,是一個無序不重復元素集
orgList=[1,0,3,7,7,5]
#list()方法是把字元串str或元組轉成數組
formatList=list(set(orgList))
print(formatList)
結果:
[0,1,3,5,7]
2.使用keys()方法
orgList=[1,0,3,7,7,5]
#list()方法是把字元串str或元組轉成數組
formatList=list({}.fromkeys(orgList).keys())
print(formatList)
結果:
[0,1,3,5,7]
上面兩種方法的問題是:結果是沒有保持原來的順序。
3.循環遍歷法
orgList=[1,0,3,7,7,5]
formatList=[]
foridinorgList:
ifidnotinformatList:
formatList.append(id)
print(formatList)
結果:
[1,0,3,7,5]
這樣的代碼不夠簡潔
4.按照索引再次排序
orgList=[1,0,3,7,7,5]
formatList=list(set(orgList))
formatList.sort(key=orgList.index)
print(formatList)
結果:
[1,0,3,7,5]
『伍』 python中列表如何去重
可以利用set去重
代碼如下:
#coding=utf-8
li=[1,2,3,4,2,1,3,0]#列表
li2=set(li)
print(li2)
『陸』 python 數組去重的方法
如:arr =['a','d','e','a']
用: arr= sorted(set(arr), key=arr.index)
同: arr = list(set(arr))
arr.sort(key=arr.index)
⚠️直接set(arr)也可以去除重復元素,只是新數組的順序就不是原來的順序陵搏姿了。
如:arr=[{'text':wuyuan,'value':1},{'text':默認,'value':2},{'text':默認,'value':2},
{'text':wyy,'value':4}]
用銀悶: f = lambda x,y:x if y in x else x + [y]
arr = rece(f, [[], ] + arr)
⚠️這里去除的字典裡面的尺絕鍵值對必須是完全一樣的。
『柒』 python中對list去重的多種方法
python中對list去重的多種方法
今天遇到一個問題,在同事隨意的提示下,用了 itertools.groupby 這個函數。不過這個東西最終還是沒用上。
問題就是對一個list中的新聞id進行去重,去重之後要保證順序不變。
直觀方法
最簡單的思路就是:
這樣也可行,但是看起來不夠爽。
用set
另外一個解決方案就是用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(ids.index)
使用itertools.grouby
文章一開始就提到itertools.grouby, 如果不考慮列表順序的話可用這個:
代碼如下:
ids = [1,4,3,3,4,2,3,4,5,6,1]
ids.sort()
it = itertools.groupby(ids)
for k, g in it:
print k
關於itertools.groupby的原理可以看這里:http://docs.python.org/2/library/itertools.html#itertools.groupby
網友補充:用rece
網友reatlk留言給了另外的解決方案。我補充並解釋到這里:
代碼如下:
In [5]: ids = [1,4,3,3,4,2,3,4,5,6,1]
In [6]: func = lambda x,y:x if y in x else x + [y]
In [7]: rece(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 or x+[y] 。
『捌』 python中如何刪除列表中重復的元素
舉個例子,比如有這樣一個列表l,可表示為[1,2,2,5,3,6],它可以通過下面的操作達到去重的目的:l=list(set(l)),在python shell中代碼執行如下圖所示:
python列表去重操作代碼運行結果
『玖』 python如何刪除list里重復的元素
這個可簡單可復雜。
簡單的:利用集合
a=list(set(a))#這樣就可以了,是不是很簡單
復雜的:
就是先對列表排序,然後比較相鄰元素是否相同,相同的則刪除後面的。大體演算法思路,代碼自己寫吧
當然還有其他的演算法...
-----------------------------------------------------------------------------------
額, 不好意思,看錯了
defQ(a):
aa=[]
foriina:
ifa.count(i)==1:
aa.append(i)
returnaa
這個就可以了,利用 list.count(obj) 計算obj在list中出現的次數進行判斷