作者s4028600 (佑)
看板Python
标题[问题] 去除列表的重复
时间Thu Dec 12 20:28:45 2019
首先有两个列表
将列表合并後去除重复
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://webptt.com/cn.aspx?n=bbs/Python/M.1576153727.A.373.html
1F:推 froce: countDict = list(item for item in l1 if l1.count(item)12/12 20:34
2F:→ s4028600: 原来如此 利用出现过几次来做条件吗...12/12 22:25
3F:→ CaptPlanet: [l1.remove(x) for x in l1]12/12 23:20
4F:→ CaptPlanet: ans = set(l2) - set(l1)12/12 23:20
这个逻辑有点难懂
但是行不通
只会打印一个
5F:推 cuteSquirrel: 用字典或list.count(), 透过出现次数去筛选12/13 00:42
count是搞懂了
字典还是很难理解
7F:推 eric781101: iterate一遍丢进set, set.remove(e) if e in set else12/13 15:27
8F:→ eric781101: set.add(e)12/13 15:27
看不懂
试不出来
9F:推 Sunal: set() ^ set()12/13 20:26
可以用
但是^是什麽函数
看不懂逻辑
是减法吗
10F:推 gene50814: a = pd.Series(l1)12/14 05:13
11F:→ gene50814: b = list(a[a.duplicated])12/14 05:13
12F:→ gene50814: [i for i in l1 if i not in b]12/14 05:13
13F:→ gene50814: 更正 duplicated()12/14 05:14
14F:推 Sunal: set 做 XOR 就好了 一行结束 就是我上一个推文推的12/14 10:01
15F:推 Sunal: pandas用在这太大材小用了12/14 10:03
※ 编辑: s4028600 (39.12.62.158 台湾), 12/15/2019 18:30:03
※ 编辑: s4028600 (39.12.62.158 台湾), 12/15/2019 18:35:37
16F:推 omd: 列表不合并,直接转set,然後照Sunal大方法 12/15 18:36
※ 编辑: s4028600 (125.230.140.168 台湾), 12/15/2019 19:12:37
17F:→ ddavid: set XOR不符原Po需求,因为合并後重复包括a里面直接就出现 12/15 22:47
18F:→ ddavid: 两次以上的这种,set XOR只会删掉两边都出现的 12/15 22:47
19F:→ crazycy: 都转成Set了 里面怎麽会有重复的... 12/15 23:30
20F:推 pingxx123: from collections import Counter 12/16 13:11
21F:→ pingxx123: l2 = Counter(l1) 12/16 13:11
22F:→ pingxx123: result = [key for key,value in c.items() if value = 12/16 13:11
23F:→ pingxx123: = 1] 12/16 13:11
24F:→ pingxx123: 最後一行是这个才对 12/16 13:12
25F:→ pingxx123: result = [key for key,value in l2.items() if value 12/16 13:12
26F:→ pingxx123: == 1] 12/16 13:12
27F:推 ddavid: @crazycy 你仔细看一下原题 12/16 23:54
28F:→ crazycy: 抱歉 没注意到 12/17 08:58
29F:→ carrlyea: l2 = [x for x in l1 if l1.count(x)==1] 12/17 11:32
30F:推 TuCH: 楼上要改成 l2 = [x for x in set(l1) if l1.count(x)==1] 12/17 12:05