【发布时间】:2022-01-20 23:50:25
【问题描述】:
我正在研究作为强化学习一部分的 python 代码
LEFT, RIGHT = range(2)
pi = lambda s: {
0:LEFT, 1:LEFT, 2:LEFT, 3:LEFT, 4:LEFT, 5:LEFT, 6:LEFT
}[s]
for s in range(7):
print(pi(s))
output:
0
0
0
0
0
0
0
我的问题是 lambda 的 [s] 是什么?在这种情况下什么 lambda 行为。字典是否保存在列表中?如果字典保存在列表中,我们必须通过列表访问,我们必须将 pi[0][s] 放入打印中,对吗?请解释
【问题讨论】:
-
[s] 是访问字典的值。就像
dict[s]一样,它会给左值。 s 是从 0 到 6 的参数。 -
问题是“存在 lambda 的 [s] 是什么?”但“现在”是什么意思?
-
s是传递给匿名lambda函数的参数的名称。[s]使用字典中的键引用值。 -
该代码以极其复杂的方式执行了本应是列表索引操作的操作。
pi = [LEFT, LEFT, LEFT, LEFT, LEFT, LEFT, LEFT]...print(pi[s])或for p in pi: print(p). -
这里的 pi 是一个用 lambda 表示法定义的函数。但是这个函数很奇怪,因为如果参数是 0,1,2,3,4,5 或 6,它总是返回 0。这里的目标不明确。