我在想如果可以從兩個列表中縮短但不使用set
創建一個獨特元素列表?兩個列表中的獨特元素
l1 = [1,1,2,2,3]
l2 = [2,1,3,3,4]
unique = []
for elem in l1+l2:
if elem not in unique:
unique.append(elem)
print unique
[1,2,3,4]
感謝您的想法
我在想如果可以從兩個列表中縮短但不使用set
創建一個獨特元素列表?兩個列表中的獨特元素
l1 = [1,1,2,2,3]
l2 = [2,1,3,3,4]
unique = []
for elem in l1+l2:
if elem not in unique:
unique.append(elem)
print unique
[1,2,3,4]
感謝您的想法
首先,你應該使用在Python set
找到獨特的價值,因爲它有效地爲您提供了獨特的元素。
如果你想使用list
那麼你提供的代碼是正確的!如果你在你的代碼中使用numpy
(這可能是大量數據的一個不錯的選擇),請numpy.unique
>>> import numpy as np
>>> wordsList = [u'nowplaying', u'PBS', u'PBS', u'nowplaying', u'job', u'debate', u'thenandnow']
>>> np.unique(wordsList)
array([u'PBS', u'debate', u'job', u'nowplaying', u'thenandnow'],
dtype='<U10')
還應考慮該基準測試結果發現unique values
Link
提供代碼,在該鏈接,但添加在這裏,供大家參考:
基準測試結果
* f2 13.24
* f4 11.73
* f5 0.37
f1 0.18
f3 0.17
f6 0.19
f2,與op的解決方案基本相同,在時間複雜度方面是O(n^2)。結果表明它是最慢的算法之一。 –
具體使用您的代碼
l1 = [1,1,2,2,3]
l2 = [2,1,3,3,4]
unique=set(l1+l2)
如果你想讓它作爲一個列表不是一組
unique=list(set(l1+l2))
這不是一個答案,因爲我特別要求不要使用set – tinySandy
唔只使用一個'set'。我猜'dict.fromkeys(l1 + l2).keys()',但這是非常作弊。 –
@AdamSmith這是非常有趣的解決方案 – tinySandy
@pianista:沒有downvote,但我認爲原因是:*爲什麼不使用'set'?這就是爲什麼Python有'set',這就是它的作用。* –