Python技术迷

心动厂 飞连被曝后台截图!摸鱼的要小心了。

刚刷到个贴子,说有网友在 Ubuntu 下把飞连关了,进程也杀了,结果用 htop 还发现有 screenshot 进程在后台偷截图,属实有点细思极恐。网友们也炸了,主流回复基本都是“公司设备和个人设备一定要分开用”,还有提醒大家装这种 VPN、远控软件的时候,自己也在被监控。

Image

作为程序员,我真觉得这事儿值得警惕。你以为关了进程就万事大吉,实际上这些安全厂商有的是骚操作,搞个自启动、隐藏进程、小进程唤醒大进程啥的,普通用户哪扛得住?尤其像飞连这种还玩 DNS 劫持,技术上没啥难度,但真挺膈应人的。网友说别想关小黑屋,这话没毛病,安全政策不是给你选的。

我想说,摸鱼可以,命得保住。别跟公司监控斗法,物理隔离是王道。工作归工作,别把自己的隐私搭进去,安全感有时候就是靠自己多留个心眼儿。【备注:文末可领最新资料】

面试题:查找重复的电子邮箱

接到我们组小王的微信,说他的Python小项目,查找邮箱重复那一块怎么搞都不对,问我有没有简单点的方法。说实话,我当时脑子一团浆糊,但这题其实挺常见的,就是那种面试、练习数据清洗老是碰到的那种。

他那意思就是,给一堆邮箱,可能有重复的,要把重复的邮箱找出来。其实这种场景你要真落到业务里,很多系统里用户注册、批量导入,都会用到,前段时间还真有人在公司导入Excel不小心把邮箱弄重复了,搞得一堆人收不到邮件,还怪IT,结果问题就在数据源这块。

反正聊着聊着我跟他说,最土最直接的思路,不就是遍历嘛,拿个字典(Python的dict啊)或者set都行,一边走一边记邮箱出现的次数。你要图省事,其实collections里有个Counter那个玩意,简直神器,啥都能统计,你直接Counter一把,分分钟搞定,晚上写这种简单逻辑,手抖都写不出bug。代码大致像这样:

from collections import Counter

deffind_duplicate_emails(email_list):
    counter = Counter(email_list)
# 返回所有出现次数大于1的邮箱
return [email for email, count in counter.items() if count > 1]

就很简单对吧,email_list一进来,Counter帮你把每个邮箱出现多少次都记下来了。你再遍历一把,过滤下count大于1的,全是重复的邮箱,输出就是个list。那种一眼能看懂的代码我是真喜欢,后面维护的人也不骂你。

其实,有时候你要考虑下,邮箱有可能有前后空格、大小写啥的,特别是那种手填的数据,很容易出锅。像有一次,我们数据库里存了好多[email protected]和[email protected],一查还是两个邮箱,其实是一个。你要保险点,可以写成这样:

deffind_duplicate_emails(email_list):
    cleaned = [email.strip().lower() for email in email_list]
    counter = Counter(cleaned)
return [email for email, count in counter.items() if count > 1]

就是加了strip和lower,先统一一下邮箱格式,免得人为错误被你统计成不同的邮箱了。

还有那种大列表上百万邮箱的,普通for循环其实也能跑,就是慢点,这种时候其实set也能用,不过Counter更方便。你要再极致点,其实还可以分批处理,但大部分业务用不到那么夸张。

-END-

我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html

🔥虎哥私藏精品🔥

虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》,总量高达650GB,点击下方公众号回复关键字 python 全部免费领