我有以下代码:
print ([12,2][0])
结果为12
print ([12,2][1])
结果为2
。为什么?
问题更新
我不明白:
target_f = self.model.predict(state)
target_f[0][action] = target
https://github.com/keon/deep-q-learning/blob/master/dqn.py#L51
为什么target_f
有一个索引[0]
,然后又有另一个索引[action]
?这是做什么的?
根据我的C编程经验,它应该是2D数组索引。这里一样吗?
答案 0 :(得分:0)
这是因为[12, 2]
是一个列表,下一个表示法是:[0]
或[1]
正在建立索引。
如果尝试打印,可以对其进行测试:print([12, 2][2])
您应该得到索引超出范围的错误。
编辑:回答第二个问题:
很难说。 target_f = self.model.predict(state)
-这是一种结构,您在上面的链接中找不到该结构的信息。
但是我们可以考虑一些类似的结构。假设您有:
target_f = [{'action': 'value1', 'action2': 'valuex'}, {'action': 'value2', 'another_key': 'another_value'}]
在您的代码target_f[0][action] = target
中:
[0]
是列表中的索引。它代表列表的第一元素:{'action': 'value1', 'action2': 'valuex'}
[action]
是字典中的键。它代表value1
。
由于您正在输入:target_f[0][action] = target
,这意味着您要用新值value1
更新target
。您的新结构将如下所示:
target_f = [{'action': target, 'action2': 'valuex'}, {'action': 'value2', 'another_key': 'another_value'}]