繁体   English   中英

示例中需要解释 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 返回dict[s]其中s是字典中的key 所以调用pi(s)等于返回dict[s] for key = s

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM