这锅我不背,全是set搞的鬼(python)

大家日常调用set集合去重时可能没太有注意,但却可能导致你以为的程序出bug。比如说创建决策树的时候出现声音粗犷的小姐姐和声音细微的小姐姐ー( ̄~ ̄)ξ:

什么,声音粗犷的小姐姐!!!

{'声音': {'粗': {'头发': {'短': '男'}}}}

或者

{'声音': {'细': '女'}}

或者

{'声音': {'粗': {'头发': {'长': '女'}}}}

或者举一个简单的例子🌰:

a = ['长', '短', '短', '长', '短', '短', '长', '长']
b = ['粗', '粗', '粗', '细', '细', '粗', '粗', '粗']
print("a=", set(a))
print("b=", set(b))

大家重复执行这个程序就会发现,会出现以下两个结果

a= {'长', '短'}
b= {'细', '粗'}

或者是 

a= {'短', '长'}
b= {'细', '粗'} 

亦或是

a= {'长', '短'}
b= {'粗', '细'} 

还有可能是

a= {'短', '长'}
b= {'粗', '细'} 

这四种情况都会出现

因为利用set创建集合(数学定义了集合不能有重复元素)时,set 集合的 pop 方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除(来自Python3 集合 | 菜鸟教程 (runoob.com)

所以大家有时候也要注意使用Python中set集合去重时可能出现的问题,也可以采用循环等方式去重,以免出现摸不着头脑的现象。程序的事,怎么能让程序员背锅呢─=≡Σ((( つ•̀ω•́)つ动感光波哔哔哔!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值