第一个图:
np.ones() 创建一个以1为值的 nS 数量的一维数组,然后这里在将一维数组中的所有值除以 nS
self.P =P 就是将变量 P 赋值为实例属性
super(GridworldEnv,self).__init__ 是调用 GridworldEnv 的父类__init__ 方法
第二个图:
isinstance(obj,classinfo):如果对象obj是类classinfo的实例则返回True,否则返回False
构造了 __init__ 方法,在 __init__ 内通过判断你传入参数的类型是否属于 列表(list)、元组(tuple) 以及参数中的元素是否等于 2 个
如果这两个条件有一个不满足,就会执行 if 里面的代码块,通过 raise 创造一个报错 ValueError
反正条件成立,将传入的 shape 参数转化为实例属性 self.shape 供类中其他方法的使用
第三个图:
it 是你生成的一个 ndarray 迭代器,而 it.finished 是判断迭代器内的元素是否全部迭代完,若还有元素则返回 False 若迭代完成返回 True
s = it.iternext() 表示进入下一次迭代,否则会一直迭代最开始的数值
it.multi_index 获取你设置的元素的索引,然后分别将两个索引赋值给 y 和 x
{a:[] for a in range(nA)} 生成 0~nA-1 个键 key,而且值 value 都是 [] 空列表的字典