求解Python中带lambda条件语句的min函数返回结果为1的原因
问题解答
你出现预期偏差的核心原因是对Python min() 函数的返回规则理解错误,具体解释如下:
min()函数的key参数仅作为元素排序的判断依据,最终返回的是原始待比较的输入元素,而非key函数的返回值。- 你的推导中关于key值的计算是正确的:两个待比较元素
1和0对应的key返回值均为4,二者key值相等。 - 当多个待比较元素的key值相同时,
min()会返回参数序列中第一个出现的元素:你传入min()的参数顺序是先a//3=1,后a//5=0,因此最终返回第一个出现的元素1。
你可以做个简单验证:调换两个参数的顺序改为min((a//5), (a//3), key=lambda x: x if x * 3 == a or x * 5 == a else a),得到的结果会是0,始终不会返回key值4,可以佐证上述逻辑。
内容的提问来源于stack exchange,提问作者jyoung
相关产品推荐
相关产品推荐

