在這裏我有一個列表我想刪除重複的從列表(沒有for循環)
a = [1, 2, 1, 4, 5, 7, 8, 4, 6]
現在我想下一輸出,但沒有for循環。 從列表中刪除所有重複項。
[2, 5, 7, 8, 6]
輸出列表僅包含單出現次數
在這裏我有一個列表我想刪除重複的從列表(沒有for循環)
a = [1, 2, 1, 4, 5, 7, 8, 4, 6]
現在我想下一輸出,但沒有for循環。 從列表中刪除所有重複項。
[2, 5, 7, 8, 6]
輸出列表僅包含單出現次數
可以爲了維持原來的順序使用Counter
和條件列表理解或filter
:
from collections import Counter
c = Counter(a)
clean_a = filter(lambda x: c[x] == 1, a) # avoids 'for' ;-)
# clean_a = list(filter(lambda x: c[x] == 1, a)) # Python3, if you need a list
# clean_a = [x for x in a if c[a] == 1] # would be my choice
「without for loop」... – efkin
@efkin理解不是for循環,只是因爲有'for'。 – schwobaseggl
對不起...我認爲這是一個類似的實施...我刪除了我的投票。你知道我在哪裏可以閱讀關於它的一些規範嗎? – efkin
考慮:a = [1, 2, 1, 4, 5, 7, 8, 4, 6]
One liner:
b = [x for x in a if a.count(x) == 1]
@Rawing,謝謝,修正! –
這是一個非常簡單和低效的實現。
我們使用一個while
循環訪問a
的每個元素。在循環中,我們檢查當前元素是否在列表中只出現一次。如果是,我們將它添加到新列表中。
a = [1, 2, 1, 4, 5, 7, 8, 4, 6]
index = 0
result = []
while index < len(a):
if a.count(a[index]) == 1:
result.append(a[index])
index += 1
print(result)
不知道是否值得費心檢查'a [index]'是否不在'result'中,以避免再次計數你知道的元素是唯一的......對於大型'a's和少量唯一值 - 可能值得... –
可能是一個想法。這只是一個額外的代碼行。另一方面,沒有人會在生產中使用它。扔掉這個奇怪的剋制「沒有for循環」,我相信你會找到更好的解決方案。 – Matthias
是的,只要在結果或a.count(a [index])== 1'中做出'如果不是[索引]'那行就行了 - 但是,在任何非教師認爲它是一個好的 - 制約約束的情況下你會使用Counter或類似的。 –
'set(a)'將產生一個不重複的結果作爲一個set對象。 – swatchai
@swatchai ...並搞亂了原來的秩序。 – schwobaseggl
輸出的標準是什麼。它是否必須是確切的輸出?換句話說,當你找到重複的東西時,你是否希望刪除第一個匹配項?或者你想要刪除第二個?因爲沒有你提供的細節,list(set(your_list))可能是一個有效的解決方案。但是你的問題很模糊,在這裏仍然缺少你自己的代碼。 – idjaw