为什么数组乘以[0]等于第一个元素?

时间:2019-07-18 07:20:37

标签: python

我有以下代码:

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数组索引。这里一样吗?

1 个答案:

答案 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'}]