进了一个失业群,才发现那些毕业于985、211的人,面试机会不断。。
我作为程序员真有点感同身受。现在的行情,别说学历了,连简历写得不顺眼都可能直接被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 全部免费领