数据处理是门学问

去重是门学问


深刻体会到做程序开发,就绕不开数据!!!
学过了Python,对于基本去重都是从接触过set这个函数的开始的,它能够快速的给列表去重。当然在第一次接触它之前我们大多是这么操作的。。。

a = [1,1,2,2,3,3,4,4,5,5]
b = []
for i in a:
    if i not in b:
        b.append(i)
print(b)
[1,2,3,4,5]

在for当中嵌套if,而且为了去重a,还定义了一个空列表b,嗯。。。这样很不python。于是百度之后了解到set,感叹python还有如此简单的办法。。。

a = [1,1,2,2,3,3,4,4,5,5]
set_a = set(a)
print(set_a)
{1,2,3,4,5}
print(set_a)
<class 'set'>

[]变成了{},list就变为了set,。。。呃,所以我们一般这么使用set:list(set(*)),这样就能保证去重之后的仍旧是一个列表!在python当中,元组、列表、集合可以相互转化。

那么两个列表呢

两个列表的情况下,仍旧绕不开或且非的问题——用中学的知识点来讲,就是并集,交集,差集。最近就遇到类似的需求,需要比较两个数据,判断非的问题,索性都整理下。

最简单的——并集(a∪b)

  • 基础版,思路有很多
a = [1,2,3,4]
b = [3,4,5,6]
c = b
for i in a:
    if i not in c:
         c.append(i)
print(a) 
[1,2,3,4,5,6]    
  • 还是set
c = a + b
print(list(set(c)))
[1,2,3,4,5,6]
  • set().union
c = list(set(a).union(set(b)))

差集(ab)

  • 基础版,在多定义一个空list即可,仅限
a = [1,2,3,4,5,6,7,8]
b = [1,3,5,7,9]
c = []
for i in b:
    if i not in a:
        c.append(i)
  • 升级版a
c = [i for i in a if i not in b]
  • 升级版plus
c = list(set(b).difference(set(a))

交集(a∩b)

  • 基础版
a = [1,2,3,4,5,6,7,8]
b = [1,3,5,7,9]
c = []
for i in b:
    if i in a:
        c.append(i)    

来了来了set数学用法

a = [1,2,3,4,5,6,7,8]
b = [1,3,5,7,9]
# 交集
jiao = set(a) & set(b)
print(jiao)
{1, 3, 5, 7}	
# 差集
cha = set(a) ^ set(b)
print(cha)
{2, 4, 6, 8, 9}
# 合集
print(set(a) | set(b))
{1, 2, 3, 4, 5, 6, 7, 8, 9}
set之间的运算:
集合表示符含义
交集&返回一个新的集合,包括同时在集合 x 和y中的共同元素
并集|返回一个新的集合,包括集合 x 和 y 中所有元素
差集-返回一个新的集合,包括在集合 x 中但不在集合 y 中的元素
补集^返回一个新的集合,包括集合 x 和 y 的非共同元素
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值