print 只用於第一個知識點
三個知識點:
1. 用defaultdict來創建一個字典負責Q的存儲,該字典的key爲state,不包括action,action對應value的索引,value的值即爲state、action對應的Q值。注意,value值的類型是一個長度爲2的一維數組,這裏只能通過lambda返回這個類型,不能直接指定這個類型。
另外,給Q詞典賦key的時候,直接在Q後面的第一個方括號中寫入,Q[key],這裏即使寫入數字也不是作爲索引,而是key。
因爲我們對value值的類型設爲有兩個元素的一維array,所以可以通過Q[key] [n]來返回對應的key所對應value中的第n個元素值。
defaultdict的用法和爲什麼方便的原因
https://www.jianshu.com/p/26df28b3bfc8
https://docs.python.org/2/library/collections.html#collections.defaultdict
2. 用解壓zip(* )來得到s,a,r索引對應的列表
zip的簡單用法
http://www.runoob.com/python/python-func-zip.html
3. 通過一個簡單的array賦值循環得到discount的數組序列
當然用list作爲存儲對象也可以。
可知這種單行for語句可以自動遍歷list或array (可循環對象 iterable),每循環一次索引+1,得到的值賦到對應的索引上。
https://zhidao.baidu.com/question/1836322078659552860.html
另外需要注意第18和22行的+1和-1的原因(下面註釋):