You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中lambda调用后接方括号与字典推导式语法疑问

问题解答

咱们直接拆解你疑惑的那行代码:

new_policy_pie = lambda state: {state:action for state, action in enumerate(np.argmax(Q, axis=1))}[state]

末尾方括号的作用

  • 先看大括号里的部分:{state:action for state, action in enumerate(np.argmax(Q, axis=1))} 是一个字典推导式,它会生成一个状态编号→最优动作的映射字典。其中:
    • np.argmax(Q, axis=1) 对Q矩阵的每一行(对应每个状态)取最大值的索引,也就是该状态下的最优动作;
    • enumerate 给每个最优动作配上对应的状态编号(从0开始的整数索引)。
  • 后面的[state]是字典的键索引操作——从刚生成的这个字典里,直接取出输入参数state对应的动作值,也就是当前状态的最优动作。

额外优化建议

这段代码的写法其实有冗余:每次调用这个lambda函数,都会重新生成一遍整个字典,完全没必要。更高效的写法是直接用np.argmax的结果数组索引:

new_policy_pie = lambda state: np.argmax(Q, axis=1)[state]

如果想进一步优化,可以提前把最优动作数组存下来,避免重复计算argmax:

optimal_actions = np.argmax(Q, axis=1)
new_policy_pie = lambda state: optimal_actions[state]

内容的提问来源于stack exchange,提问作者CamWheeler135

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 21:55:42