[英]How to get a list with only unique numbers? (Python)
我想編寫一個程序來檢查重復值並刪除它們。 所以例如我想從這個:
list = [2,6,8,2,9,8,8,5,2,2]
只得到這個:
uniques = [6,9,5]
我似乎找不到一個好方法來比較每個項目,看看它們是否相等,然后將它們刪除。 任何幫助將不勝感激!
>>> from collections import Counter
>>> lst = [2,6,8,2,9,8,8,5,2,2]
>>> c = Counter(lst)
>>> [x for x in c if c[x] == 1]
[6, 9, 5]
除了對每個元素使用count
或in
之外,這應該是 O(n) 而不是 O(n²)。
如果您也想保留元素的順序,請遵循以下最佳方法:
uniques = list(dict.fromkeys(list))
print(uniques)
鑒於您想要一個僅在列表中出現一次的值列表,這應該可行。 我使用哈希圖將值的計數存儲在列表中,然后將計數為 1 的鍵添加到unqiue
中。
l = [2,6,8,2,9,8,8,5,2,2]
unique = []
count = {}
for i in l:
if count.get(i) is None:
count[i] = 1
else:
count[i]+=1
for i in count.keys():
if count[i] == 1:
unique.append(i)
print(unique)
輸出
[6, 9, 5]
def unique(x: list):
a = set()
for i in range(len(x)):
if x.index(x[i]) == (len(x) - 1) - x[::-1].index(x[i]):
a.add(x[i])
return list(a)
print(unique([1, 2, 1, 11, 4, 4, 6, 3, 2]))
# [3, 11, 6]
list = [2,6,8,2,9,8,8,5,2,2] uniques = [] for i in range(len(list)): if list.count(list[i])==1: uniques.append(list[i])
list = [2,6,8,2,9,8,8,5,2,2] uniques = [] for i in list: if i not in uniques: uniques.append(i)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.