python - Python min 函数与 lambda if 语句
问题描述
a = 4
compare = min((a//3), (a//5), key=lambda x: x if x * 3 == a or x * 5 == a else a)
为什么比较是1?我只是想想
a // 3 = 1 -> x
a // 5 = 0 -> x2
我的预测
- key 的 lambda 函数,x 变成 4,x2 变成 4 所以,min 函数选择 x 最后比较 = 4
但是,它说比较= 1。
怎么能比较为1?
解决方案
当您将函数作为键传递时,它会将您传递的参数转换为函数返回的任何参数,然后min
对它们执行,但min
不返回转换后的值之一,而是返回您最初传递的值之一。
推荐阅读
- javascript - 在 Highcharts Networkgraph 中显示/隐藏子节点和链接
- docker - Jenkins 管道,如何在没有 Jenkins 文件的情况下从 scm 获取源代码
- mysql - 如何更正字符串格式以防止语句中出现无效字符?
- javascript - 在静音 iPhone 上播放 P5.js 声音
- python - 如何修复:.py 文件无法从 .yaml 文件中解码以俄语和白俄罗斯语编写的 str。我正在使用 UTF-8 编码
- python-3.x - 使用 Matplotlib 绘制 3 相正弦曲线时出错
- node.js - 使用 npm 安装节点失败并出现 EACCES 错误
- json - 如何使用 Vue.axios.delete() 只删除一个 json 对象
- elixir - 使用 elixir 中的 IO.puts 打印到标准输出而无需换行
- c++ - 无法突出显示 RegEx 捕获行的背景