當前位置:首頁 » 編程語言 » pythonlistdistinct

pythonlistdistinct

發布時間: 2022-11-03 19:21:06

1. python如何刪除list里重復的元素

一共使用四種方法來去除列表中的重復元素,下面是具體實現:

def f1(seq):

# not order preserving

set = {}

map(set.__setitem__, seq, [])

return set.keys()

def f2(seq):

# order preserving

checked = []

for e in seq:

if e not in checked:

checked.append(e)

return checked

def f3(seq):

# Not order preserving

keys = {}

for e in seq:

keys[e] = 1

return keys.keys()

def f4(seq):

# order preserving

noDupes = []

[noDupes.append(i) for i in seq if not noDupes.count(i)]

return noDupes

def f5(seq, idfun=None):

# order preserving

if idfun is None:

def idfun(x): return x

seen = {}

result = []

for item in seq:

marker = idfun(item)

# in old Python versions:

# if seen.has_key(marker)

# but in new ones:

if marker in seen: continue

seen[marker] = 1

result.append(item)

return result

def f6(seq):

# Not order preserving

set = Set(seq)

return list(set)

2. python兩個list元素的相同項

list1 = [1,2,3] list2=[2,3,4]set1 = set(list1)set2 = set(list2)print(set1&set2){2, 3}print(set1^set2){1, 4}

3. python list 去重復

import
a = [{'a':12,'b':21},{'a':13,'b':22},{'a':14,'b':22},{'a':15,'b':23},{'a':16,'b':22}]
d = {}
for i in a:
d.setdefault(i['b'], 0)
d[i['b']] += 1
at = .(a)
for i in at:
if d[i['b']] > 1:
a.remove(i)
print a
先把b值統計一下。然後再一個比對,如果統計個數大於1,就從列表中移出。

4. python如何刪除list里重復的元素

這個可簡單可復雜。

簡單的:利用集合

a=list(set(a))#這樣就可以了,是不是很簡單

復雜的:

就是先對列表排序,然後比較相鄰元素是否相同,相同的則刪除後面的。大體演算法思路,代碼自己寫吧

當然還有其他的演算法...

-----------------------------------------------------------------------------------

額, 不好意思,看錯了

defQ(a):
aa=[]
foriina:
ifa.count(i)==1:
aa.append(i)
returnaa

這個就可以了,利用 list.count(obj) 計算obj在list中出現的次數進行判斷

5. Python中list,tuple,dict,set的區別和用法

python 中list,tuple,dict,set是最常用的集合類型。
list列表,相當於一個數組,不過list的長度是自動變化的而且列表元素自由的,不必每個元素都是同一種類型。它的簡潔的定義方式是a=[]。有序組合
tuple也是一個組合。不過tuple在定義好之後就不能再變化。它的簡潔的定義方式是a=1,3也可以是a=(1,3).有序組合。
dict是字典類型。也就是鍵值對類型。鍵名不可以重復,並且不可以變化(字元串就符合這個要求,常用字元串作為鍵名)。它的簡潔的定義方式是a={}.無序組合(意思就是你無法按照添加的順序對他進行遍歷)。
set是set類型(不好翻譯,用的也少)。也是一個無序的組合,元素是互斥的,也就不會出現相同的元素。可以把一個序列轉換成無重復元素的set.無序組合。

6. 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] 。

7. python中list表示什麼

list是python語言中的基本數據類型列表,使用[]表示;列表中元素的類型可以不相同,它支持數字,字元串甚至可以包含列表,如下:
ak = [1, '67',true,[23,45,67]]

8. python list找出一個元素的位置(重復元素怎麼分別找出位置)

幾種方式的回答:
1)
print('*'*15,'想找出裡面有重復數據的索引值','*'*15)
listA = [100, 94, 88, 82, 76, 70, 64, 58, 52, 46, 40, 34,76]
print('列表中第1次出現的位置 = ',listA.index(76))
2)
a_list = ['a','b','c','c','d','c']
find = 'c'
print('重復元素出現的位置索引分別是 = ',[i for i,v in enumerate(a_list) if v==find])
-----------------------------------------------------
3)### 求某個元素重復的索引值,函數方式表述如下:
a_list = ['a','b','c','c','d','c']
def unique_index(L,f):
"""L表示列表, i表示索引值,v表示values,f表示要查找的元素 """
return [i for (i,v) in enumerate(L) if v==f]
print('索引值 = ',unique_index(a_list,'c'))

運行結果:
索引值 = [2, 3, 5]

4)還缺一種,列出多個元素重復的索引值,以後再補充
......

9. 如何找出Python list中有重復的項

可以對第二個list的元素進行遍歷,檢查是否出現在第二個list當中,如果使用表理解,可以使用一行代碼完成任務。
list1 = [1,2,3,4,5]
list2 = [4,5,6,7,8]
print [l for l in list1 if l in list2]
# [4,5]
如果每一個列表中均沒有重復的元素,那麼還有另外一種更好的辦法。首先把兩個list轉換成set,然後對兩個set取交集,即可得到兩個list的重復元素。
set1 = set(list1)
set2 = set(list2)
print set1 & set 2
# {4,5}

10. python刪除list重復元素

在Python中主要有5種方式 。
1、使用set函數
set是定義集合的,無序,非重復
numList = [1,1,2,3,4,5,4]
print(list(set(numList)))
#[1, 2, 3, 4, 5]
2、先把list重新排序,然後從list的最後開始掃描
a = [1, 2, 4, 2, 4, 5,]
a.sort()
last = a[-1]
for i in range(len(a) - 2, -1, -1):
if last == a[i]:
del a[i]
else:
last = a[i]
print(a) #[1, 2, 4, 5]
3、使用字典函數
a=[1,2,4,2,4,]
b={}
b=b.fromkeys(a)
c=list(b.keys())
print(c) #[1, 2, 4]
4、append方式
def delList(L):
L1 = []
for i in L:
if i not in L1:
L1.append(i)
return L1
print(delList([1, 2, 2, 3, 3, 4, 5])) #[1, 2, 3, 4, 5]
5、count + remove方式
def delList(L):
for i in L:
if L.count(i) != 1:
for x in range((L.count(i) - 1)):
L.remove(i)
return L
print(delList([1, 2, 2, 3, 3, 4]))#[1, 2, 3, 4]

熱點內容
蘇州什麼是刀片伺服器 發布:2025-01-10 17:08:55 瀏覽:916
樓宇對講linux和安卓哪個好 發布:2025-01-10 17:08:53 瀏覽:629
編程貓電腦版 發布:2025-01-10 17:07:25 瀏覽:941
上傳音樂表 發布:2025-01-10 17:04:52 瀏覽:165
如何在安卓tv上裝當貝市場 發布:2025-01-10 16:59:54 瀏覽:978
電腦鐵電存儲 發布:2025-01-10 16:57:19 瀏覽:463
c語言源程序的基本單位 發布:2025-01-10 16:47:37 瀏覽:286
王者安卓賬號如何換到蘋果 發布:2025-01-10 16:34:47 瀏覽:729
c語言lua 發布:2025-01-10 16:34:46 瀏覽:207
我的世界檢測伺服器人員 發布:2025-01-10 16:32:30 瀏覽:833