Python技术迷

无语!某公司员工自掏网费上班。。

刚刷到一个贴子,说某公司员工上班居然要自己掏腰包交网费,属实离谱了 

Image

网友有说“公司没钱”,我看就是没心。员工是资源不是负担,基本的工作条件都不保障,这不是省成本,是在自毁长城。说到底,这还是个“性价比”问题,公司想用最小成本榨取最大价值,员工图个安稳忍一忍,结果吃亏的总是基层人。

从我的角度看,这事反映的不是公司穷,是思维穷。别以为裁员、降本能解决问题,不尊重劳动的企业,迟早没人愿意来。【备注:文末可领最新资料】

面试题:统计重复个数

有一次啊,我在公司加班到晚上十一点半,就为了写一个简单的功能——统计一堆用户评论里,重复出现了多少次“谢谢”,结果写到我都开始怀疑人生了。你说这个需求听起来是不是挺水的?但老板说这功能能“分析用户热情度”,你敢说不重要?好,那就开干。

一开始我脑子一热,用了个for循环套着list.count,写完跑了一下,卧槽,三百多条数据跑了快五秒钟,我直接崩溃。后来冷静点想了下,哎不对啊,这不就是经典的“统计重复次数”吗?Python不是有dict吗,或者直接用collections里那个Counter也行啊。于是我换了写法,代码就长这样:

from collections import Counter

comments = [
"谢谢", "牛逼", "谢谢", "支持", "谢谢", "牛逼", "可以", "谢谢", "谢谢", "牛逼", "可以", "可以"
]

count_result = Counter(comments)

for word, count in count_result.items():
    print(f"{word} 出现了 {count} 次")

你们看,这才是写Python的正确姿势啊,Counter这东西简直是统计界的AK47,用起来又快又爽。你就把所有要统计的元素丢进去,它自己就帮你一顿操作猛如虎,直接输出每个词出现几次。

我后来想搞点花活,就想把重复次数大于1的拿出来,顺手写了这几行:

duplicates = {word: count for word, count in count_result.items() if count > 1}
print("重复的词有:", duplicates)

是不是挺自然的?像这样的小功能,如果你写复杂了,那真的是在制造Bug,不是在写代码。

不过话说回来,这种题其实面试还真会考,尤其是考你处理大量数据的时候。有一次我朋友面阿里,问的是——“如果数据在一个几G大的日志文件里,怎么统计IP出现次数最多的是哪个?”这时候你要是还用list.count,那面试官直接劝你回家。要用啥?还是hash表——dict这老伙计。而且得边读边处理,不然内存爆了。

ip_counter = {}

with open("access.log", "r") as f:
for line in f:
        ip = line.strip().split(" ")[0]
if ip in ip_counter:
            ip_counter[ip] += 1
else:
            ip_counter[ip] = 1

top_ip = max(ip_counter.items(), key=lambda x: x[1])
print("出现最多的IP是:", top_ip)

你看这段代码就很朴素,但实际效果顶呱呱。写完跑一遍,就能看出哪台机器访问得最多。哦对,还有个坑,别忘了考虑大小写,如果你统计英文单词那种,"Apple" 和 "apple" 要不要当成一个?这得跟产品确认,不然你就等着被怼吧。

反正我现在写这种功能,一般都懒得动脑子,直接Counter一键上车,万一要做排序:

sorted_counts = count_result.most_common()
print("排序后的结果:", sorted_counts)

它自带排序啊兄弟,简直是内卷之王。Python这个语法,真的是人写的,不是神写的,够用就行。

-END-

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

🔥虎哥私藏精品🔥

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