如果序列中的值是可雜湊的,那麼可以直接用下面的方法:
如果不知道是不是可雜湊的可以這樣判斷: isinstance(物件,hashable)
def dedupe(items):
seen = set()
for item in items:
if item not in seen:
yield item
seen.add(item)
list(dedupe([random.randint(0,100) for k in range(1000)]))
不算函式一句話就搞定啦,真的很方便
如果是不可雜湊物件的話,就用下面的:
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)
key的作用是指定乙個函式用來將序列中的元素轉換為可雜湊的型別.
舉個例子:
a = [, , , ]
list(dedupe(a, key=lambda d: (d['x'], d['y'])))
list(dedupe(a, key=lambda d: d['x']))
Python 序列去重
1 效率最高的方式,需要保證序列中的元素都是可雜湊的,即數值 字串 元組 frozenset等,而列表 字典 集合之類的就不行。def foo s try return list set s expect expection,e pass 2 效率中的方式,需要保證序列中的元素都是可排序的。def ...
python實現序列整數去重
massage 題目描述 輸入n個整數的序列,要求對這個序列進行去重操作。所謂去重,是指對這個序列中每個重複出現的整數,只保留該數第一次出現的位置,刪除其餘位置。輸入描述 輸入包含兩行,第一行包含乙個正整數n 1 n 1000 表示第二行序列中數字的個數 第二行包含n個整數 範圍1 5000 用空格...
python學習 對列表中的元素去重並保持原順序
比如 list1 1,2,4,9,5,6,5,2,4,7,8,0 現在需要對其進行去重,最簡單的操作是通過set方法 得到 0,1,2,4,5,6,7,8,9 但是這樣就改變了原來的順序,如果我們還想保持原來列表的順序,可以通過sort 方法中的key欄位進行設定 list1 1,2,4,9,5,6...