<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
列表去重在python實際運用中,十分常見,也是最基礎的重點知識。
以下總結了5種常見的列表去重方法
此方法去重後,原順序保持不變。
# for迴圈實現列表去重 list1 = ['a', 'b', 1, 3, 9, 9, 'a'] list2 = [] for l1 in list1: if l1 not in list2: list2.append(l1) print(list2)
結果:[‘a’, ‘b’, 1, 3, 9]
此方法去重後,原順序保持不變。
# 使用列表推導式去重 list1 = ['a', 'b', 1, 3, 9, 9, 'a'] res = [] [res.append(i) for i in list1 if i not in res] print(res)
結果:[‘a’, ‘b’, 1, 3, 9]
原理:同一個集合的元素之間是不允許重複的
# set()列表去重 list1 = ['a', 'b', 1, 3, 9, 9, 'a'] list2 = list(set(list1)) print(list2)
結果:[1, 3, 9, ‘b’, ‘a’]
問題:使用set()函數去重後,會自動排序,則原列表的順序會發生改變
解決辦法有2種:
第一種方法,使用sort()方法
# # 第一種方法,sort() list1 = ['a', 'b', 1, 3, 9, 9, 'a'] list2 = list(set(list1)) list2.sort(key=list1.index) print(list2)
結果:[‘a’, ‘b’, 1, 3, 9]
注:sort()方法沒有返回值,對列表元素進行原地排序
第二種方法,使用sorted()函數
# 第二種方法,sored() list1 = ['a', 'b', 1, 3, 9, 9, 'a'] list2 = sorted(list(set(list1)), key=list1.index) print(list2)
結果:[‘a’, ‘b’, 1, 3, 9]
注:python內建函數sorted()函數返回新的列表,並不對原列表做任何修改
原理:字典的"鍵"是不允許重複的
此方法去重後,原來順序保持不變。
# 使用新建字典實現列表去重 list1 = ['a', 'b', 1, 3, 9, 9, 'a'] dic = {} dic = dic.fromkeys(list1).keys() print(list(dic))
結果:[‘a’, ‘b’, 1, 3, 9]
上面的4種去重方法,都是保留一個,刪除其他
下面這種方法則是,只要存在重複,一個都不保留
# 刪除存在重複的值,不保留 list1 = ['a', 'b', 1, 3, 9, 9, 'a'] list2 = [i for i in list1 if list1.count(i) == 1] print(list2)
結果:[‘b’, 1, 3]
以上就是關於列表去重的5種方法,可以根據需求選擇對應的方法。
### 4.2 元素去重 # 4.2.1 一維陣列去重 a = np.array([1, 2, 3, 4, 5, 5, 7, 3, 2, 2, 8, 8]) print('去重前:', a) b = np.unique(a) print('去重後:', b) # 4.2.2 二維陣列去重 c = np.array(((1, 2), (3, 4), (5, 6), (1, 3), (3, 4), (7, 6))) print('去重前:', c) # 方法一:利用set,set是無序不重複集合(推薦) s = set() #建立空集合 for t in c: s.add(tuple(t)) #將陣列轉為元祖tuple,保證不被修改;再把元祖加入到集合中,完成去重 g = np.array(list(s)) # 將集合轉換為列表,最後轉為二維陣列 print('去重後:', g) # 合起來寫 print('方法一去重後:', np.array(list(set(tuple(t) for t in c)))) # 方法二:轉換為虛數 r, i = np.split(c, (1, ), axis=1) print(r) print(i) x = r + i * 1j # x = c[:, 0] + c[:, 1] * 1j print('轉換成虛數:', x) # 變成一維陣列,可使用np.unique() print('虛數去重後:', np.unique(x)) print(np.unique(x, return_index=True, return_counts=True)) # return_index=True表示返回另一個引數,這個引數也是一個陣列, # array([0, 3, 1, 2, 5]表示去重後的每個元素在去重前的陣列中的位置/下標 # return_counts=True表示返回各元素出現的頻次 idx = np.unique(x, return_index=True)[1] # 第[1]列的陣列正是return_index=True返回的內容:在c中的位置/下標 print('二維陣列去重:n', c[idx]) #提取這些下標所在的元素 # 結果: # 去重前: [1 2 3 4 5 5 7 3 2 2 8 8] # 去重後: [1 2 3 4 5 7 8] # 去重前: [[1 2] # [3 4] # [5 6] # [1 3] # [3 4] # [7 6]] # 去重後: [[1 2] # [1 3] # [5 6] # [7 6] # [3 4]] # 方法一去重後: [[1 2] # [1 3] # [5 6] # [7 6] # [3 4]] # [[1] # [3] # [5] # [1] # [3] # [7]] # [[2] # [4] # [6] # [3] # [4] # [6]] # 轉換成虛數: [[1.+2.j] # [3.+4.j] # [5.+6.j] # [1.+3.j] # [3.+4.j] # [7.+6.j]] # 虛數去重後: [1.+2.j 1.+3.j 3.+4.j 5.+6.j 7.+6.j] # (array([1.+2.j, 1.+3.j, 3.+4.j, 5.+6.j, 7.+6.j]), array([0, 3, 1, 2, 5], dtype=int64), array([1, 1, 2, 1, 1], dtype=int64)) # 二維陣列去重: # [[1 2] # [1 3] # [3 4] # [5 6] # [7 6]]
到此這篇關於python列表去重的5種常見方法的文章就介紹到這了,更多相關python列表去重方法內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45