next_state_action = s[0,0] + np.array(change[i]) , s[0,1] + np.array(change[i]) # 有点问题np.array把列表转为数组 TypeError: list indices must be integers or slices, not tuple
时间: 2024-02-13 07:05:58 浏览: 144
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
5星 · 资源好评率100%
这个错误是因为 s 是一个列表,而不是一个二维数组。在 Python 中,列表的索引是通过单个整数值来访问的,而不是通过元组来访问的。
为了解决这个问题,可以将 s 定义为一个二维数组,然后修改 next_state_action 的计算方式。修改后的代码如下:
```
import numpy as np
# 定义初始状态
s = np.array([[1, 1]])
# 定义移动步长
step = 1
change = [[0, -step], [0, step], [-step, 0], [step, 0]]
# 计算四个方向的状态值
F_actions = []
for i in range(4):
next_state_action = np.array([s[0, 0] + change[i][0], s[0, 1] + change[i][1]])
x1, y1 = next_state_action
F_next_state_actions = pow(x1, 2) + pow(y1, 2)
F_actions.append(F_next_state_actions)
# 取最小状态值的索引
action = np.argmin(F_actions)
# 打印输出
print('状态值:', F_actions)
print('最小状态值的索引:', action)
```
这样就可以避免 TypeError 错误了。
阅读全文