Python技术迷

进了一个失业群,才发现那些毕业于985、211的人,面试机会不断。。

刚刷到个帖子,有网友说自己进了个“失业群”,发现群里那些985、211的哥们一个个面试机会不断,听着像是人生赢家,结果居然全都过不了😂。也有网友跟着吐槽:自己也面试一堆,没卵用。
Image

我作为程序员真有点感同身受。现在的行情,别说学历了,连简历写得不顺眼都可能直接被pass。面试机会多≠能拿到offer,技术问得越来越卷,

网友说“没卵用”,其实是一种无力感。我觉得关键不在于你面试了多少次,而在于你有没有在复盘、在成长。再说了,现在搞技术的,除了卷本事,还得卷项目经历、沟通能力,甚至长相气质都在被看……

话说回来,不要把一次两次失败当成否定自己,全靠坚持+持续进化才能在寒冬中活下去。加油💪!【备注:文末可领最新资料】

面试题:购买了产品 A 和产品 B 却没有购买产品 C 的顾客

昨天晚上我在公司楼下抽烟,碰到我们隔壁组的老张,他跟我吐槽,说他们运营要做个交叉销售分析,说白了就是找出那些买了A、买了B、但没买C的用户。我一听这个需求,其实挺常见的嘛,尤其搞推荐系统、促销策略经常要用。

我当时一边掐烟一边想,这不就集合操作嘛——用Python几行代码就能搞定了。但你要说写个通俗点的算法思路,那我给你讲讲我怎么想的,顺便咱也写段代码,反正闲着也是闲着。

首先哈,数据格式我们默认是那种日志或者交易记录格式,可能长这样:

[
  {"user": 1, "product": "A"},
  {"user": 1, "product": "B"},
  {"user": 2, "product": "A"},
  {"user": 2, "product": "C"},
  {"user": 3, "product": "A"},
  {"user": 3, "product": "B"},
  {"user": 4, "product": "B"},
  {"user": 4, "product": "C"},
  {"user": 5, "product": "A"},
  {"user": 5, "product": "B"},
]

就这种扁平结构最方便了,管你背后是数据库还是csv,先加载进来再说。然后咱目标就是找出那些同时买了A和B、但没买C的人,对吧?

我当时顺手写了段代码,差不多长这样:

from collections import defaultdict

# 模拟交易数据
data = [
    {"user": 1, "product": "A"},
    {"user": 1, "product": "B"},
    {"user": 2, "product": "A"},
    {"user": 2, "product": "C"},
    {"user": 3, "product": "A"},
    {"user": 3, "product": "B"},
    {"user": 4, "product": "B"},
    {"user": 4, "product": "C"},
    {"user": 5, "product": "A"},
    {"user": 5, "product": "B"},
]

# 整理成用户购买集合
user_products = defaultdict(set)
for entry in data:
    user_products[entry["user"]].add(entry["product"])

# 筛选:买了A和B,但没买C的用户
target_users = [
    user for user, products in user_products.items()
if"A"in products and"B"in products and"C"notin products
]

print("目标用户:", target_users)

然后控制台一跑出来:目标用户:[1, 3, 5]。我心想,这不就搞定了嘛。逻辑也简单粗暴:先用个字典把每个用户买了啥都记下来,然后遍历一遍条件判断。

说白了这个算法不是啥高深的AI模型,但它特别实用。你别小看这种“小筛选”,很多时候商业决策都是从这些细节开始的,比如:这些人为什么不买C?是对C不感兴趣,还是压根不知道有C?那就可以定向推送一个C的优惠券试试看。

后来我跟老张讲完,他点头连连,说:“诶你这思路比我们那数据分析师绕来绕去的复杂SQL清楚多了。”我说兄弟你们搞那么复杂干嘛,就Python走一波,数据拉出来,十分钟见效。

哦对了,这段代码也不是写死的,咱可以加参数,甚至你换成D、E、F都行,用函数封装一下:

deffind_users_bought_XY_not_Z(data, x, y, z):
    user_products = defaultdict(set)
for entry in data:
        user_products[entry["user"]].add(entry["product"])
return [
        user for user, products in user_products.items()
if x in products and y in products and z notin products
    ]

就这么一个通用的小方法,啥营销策划都能套一遍。什么“买了保温杯没买枸杞”“买了游戏机没买会员”……全都能查。

哎对了说了这么多,我外卖到了,我先去拿一下,回来再跟你们讲讲这逻辑还能怎么扩展到多商品组合场景,比如A+B+C都买了才算忠实用户啥的。

-END-

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

🔥虎哥私藏精品🔥

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