[問題] 去除列表的重複

看板Python作者 (佑)時間4年前 (2019/12/12 20:28), 4年前編輯推噓11(11019)
留言30則, 13人參與, 4年前最新討論串1/5 (看更多)
首先有兩個列表 將列表合併後去除重複 l1 = ['b','c','d','b','c','a','a'] l2 = list(set(l1)) print (l2) 打印 ['b', 'c', 'a', 'd'] 但是我想要去除重複 想要打印結果是這樣 ['d'] 只取沒有重複的 有方法嗎 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.224.167.127 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1576153727.A.373.html

12/12 20:34, 4年前 , 1F
countDict = list(item for item in l1 if l1.count(item)
12/12 20:34, 1F

12/12 22:25, 4年前 , 2F
原來如此 利用出現過幾次來做條件嗎...
12/12 22:25, 2F

12/12 23:20, 4年前 , 3F
[l1.remove(x) for x in l1]
12/12 23:20, 3F

12/12 23:20, 4年前 , 4F
ans = set(l2) - set(l1)
12/12 23:20, 4F
這個邏輯有點難懂 但是行不通 只會打印一個

12/13 00:42, 4年前 , 5F
用字典或list.count(), 透過出現次數去篩選
12/13 00:42, 5F

12/13 00:43, 4年前 , 6F
12/13 00:43, 6F
count是搞懂了 字典還是很難理解

12/13 15:27, 4年前 , 7F
iterate一遍丟進set, set.remove(e) if e in set else
12/13 15:27, 7F

12/13 15:27, 4年前 , 8F
set.add(e)
12/13 15:27, 8F
看不懂 試不出來

12/13 20:26, 4年前 , 9F
set() ^ set()
12/13 20:26, 9F
可以用 但是^是什麼函數 看不懂邏輯 是減法嗎

12/14 05:13, 4年前 , 10F
a = pd.Series(l1)
12/14 05:13, 10F

12/14 05:13, 4年前 , 11F
b = list(a[a.duplicated])
12/14 05:13, 11F

12/14 05:13, 4年前 , 12F
[i for i in l1 if i not in b]
12/14 05:13, 12F

12/14 05:14, 4年前 , 13F
更正 duplicated()
12/14 05:14, 13F

12/14 10:01, 4年前 , 14F
set 做 XOR 就好了 一行結束 就是我上一個推文推的
12/14 10:01, 14F

12/14 10:03, 4年前 , 15F
pandas用在這太大材小用了
12/14 10:03, 15F
※ 編輯: s4028600 (39.12.62.158 臺灣), 12/15/2019 18:30:03 ※ 編輯: s4028600 (39.12.62.158 臺灣), 12/15/2019 18:35:37

12/15 18:36, 4年前 , 16F
列表不合併,直接轉set,然後照Sunal大方法
12/15 18:36, 16F
※ 編輯: s4028600 (125.230.140.168 臺灣), 12/15/2019 19:12:37

12/15 22:47, 4年前 , 17F
set XOR不符原Po需求,因為合併後重複包括a裡面直接就出現
12/15 22:47, 17F

12/15 22:47, 4年前 , 18F
兩次以上的這種,set XOR只會刪掉兩邊都出現的
12/15 22:47, 18F

12/15 23:30, 4年前 , 19F
都轉成Set了 裡面怎麼會有重複的...
12/15 23:30, 19F

12/16 13:11, 4年前 , 20F
from collections import Counter
12/16 13:11, 20F

12/16 13:11, 4年前 , 21F
l2 = Counter(l1)
12/16 13:11, 21F

12/16 13:11, 4年前 , 22F
result = [key for key,value in c.items() if value =
12/16 13:11, 22F

12/16 13:11, 4年前 , 23F
= 1]
12/16 13:11, 23F

12/16 13:12, 4年前 , 24F
最後一行是這個才對
12/16 13:12, 24F

12/16 13:12, 4年前 , 25F
result = [key for key,value in l2.items() if value
12/16 13:12, 25F

12/16 13:12, 4年前 , 26F
== 1]
12/16 13:12, 26F

12/16 23:54, 4年前 , 27F
@crazycy 你仔細看一下原題
12/16 23:54, 27F

12/17 08:58, 4年前 , 28F
抱歉 沒注意到
12/17 08:58, 28F

12/17 11:32, 4年前 , 29F
l2 = [x for x in l1 if l1.count(x)==1]
12/17 11:32, 29F

12/17 12:05, 4年前 , 30F
樓上要改成 l2 = [x for x in set(l1) if l1.count(x)==1]
12/17 12:05, 30F
文章代碼(AID): #1TyZ9_Dp (Python)
討論串 (同標題文章)
文章代碼(AID): #1TyZ9_Dp (Python)