列表中元素位置的索引用的是L.index
公司主營(yíng)業(yè)務(wù):做網(wǎng)站、網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)公司推出匯川免費(fèi)做網(wǎng)站回饋大家。
本文實(shí)例講述了Python去除列表中重復(fù)元素的方法。分享給大家供大家參考。具體如下:
比較容易記憶的是用內(nèi)置的set
l1 = ['b','c','d','b','c','a','a']
l2 = list(set(l1))
print (l2)
還有一種據(jù)說速度更快的,沒測(cè)試過兩者的速度差別
l1 = ['b','c','d','b','c','a','a']
l2 = {}.fromkeys(l1).keys()
print (l2)
這兩種都有個(gè)缺點(diǎn),祛除重復(fù)元素后排序變了:
['a', 'c', 'b', 'd']
如果想要保持他們?cè)瓉淼呐判颍?/p>
用list類的sort方法
l1 = ['b','c','d','b','c','a','a']
l2 = list(set(l1))
l2.sort(key=l1.index)
print (l2)
也可以這樣寫
#Python學(xué)習(xí)交流群:
l1 = ['b','c','d','b','c','a','a']
l2 = sorted(set(l1),key=l1.index)
print (l2)
也可以用遍歷
l1 = ['b','c','d','b','c','a','a']
l2 = []
for i in l1:
if not i in l2:
l2.append(i)
print (l2)
上面的代碼也可以這樣寫
l1 = ['b','c','d','b','c','a','a']
l2 = []
[l2.append(i) for i in l1 if not i in l2]
print (l2)
這樣就可以保證排序不變了
在pythoncook里邊提到的一種面向可哈希數(shù)據(jù)的取出相同元素的方法是:利用到了集合與生成器set、yield
def dedupe(items):
seen = set()
for item in items:
if item not in seen:
yield item
seen.add(item)
不可變類型可哈希,可變類型不可哈希,對(duì)于不可哈希的數(shù)據(jù)
上述代碼改成:
def dedupe(items, key=None):
seen = set()
for item in items:
val = item if key is None else key(item)
if val not in seen:
yield item
seen.add(val)