需要在示例中解释 lambda 行为
Need explanation of lambda behavior in example
我正在查看 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] 打印出来,对吗?请解释
pi = lambda s: {
0:LEFT, 1:LEFT, 2:LEFT, 3:LEFT, 4:LEFT, 5:LEFT, 6:LEFT
}[s]
无非就是
def pi(s):
return {0:LEFT, 1:LEFT, 2:LEFT, 3:LEFT, 4:LEFT, 5:LEFT, 6:LEFT}[s]
哪里
{0:LEFT, 1:LEFT, 2:LEFT, 3:LEFT, 4:LEFT, 5:LEFT, 6:LEFT}[s]
正在获取键 s
的属性(此处为 {0:LEFT, 1:LEFT, 2:LEFT, 3:LEFT, 4:LEFT, 5:LEFT, 6:LEFT}
)。
所以 {0:LEFT, 1:LEFT, 2:LEFT, 3:LEFT, 4:LEFT, 5:LEFT, 6:LEFT}[1]
给出 LEFT
因为 LEFT
是键 1
.
的属性
上面的代码定义了这个字典:
dict = {
0:LEFT, 1:LEFT, 2:LEFT, 3:LEFT, 4:LEFT, 5:LEFT, 6:LEFT
}
或者 (left = 0
):
dict = {
0:0, 1:0, 2:0, 3:0, 4:0, 5:0, 6:0
}
pi
lambda returns dict[s]
其中 s
是字典中的 key
。
所以调用 pi(s)
等于返回 dict[s]
for key = s
.
我正在查看 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] 打印出来,对吗?请解释
pi = lambda s: {
0:LEFT, 1:LEFT, 2:LEFT, 3:LEFT, 4:LEFT, 5:LEFT, 6:LEFT
}[s]
无非就是
def pi(s):
return {0:LEFT, 1:LEFT, 2:LEFT, 3:LEFT, 4:LEFT, 5:LEFT, 6:LEFT}[s]
哪里
{0:LEFT, 1:LEFT, 2:LEFT, 3:LEFT, 4:LEFT, 5:LEFT, 6:LEFT}[s]
正在获取键 s
的属性(此处为 {0:LEFT, 1:LEFT, 2:LEFT, 3:LEFT, 4:LEFT, 5:LEFT, 6:LEFT}
)。
所以 {0:LEFT, 1:LEFT, 2:LEFT, 3:LEFT, 4:LEFT, 5:LEFT, 6:LEFT}[1]
给出 LEFT
因为 LEFT
是键 1
.
上面的代码定义了这个字典:
dict = {
0:LEFT, 1:LEFT, 2:LEFT, 3:LEFT, 4:LEFT, 5:LEFT, 6:LEFT
}
或者 (left = 0
):
dict = {
0:0, 1:0, 2:0, 3:0, 4:0, 5:0, 6:0
}
pi
lambda returns dict[s]
其中 s
是字典中的 key
。
所以调用 pi(s)
等于返回 dict[s]
for key = s
.