我有一个功能:
I need to first reverse the list and then take an entry from it.
早些时候,我正在制作3个函数,但现在我正在定义main函数和其他2个函数。
答案 0 :(得分:4)
你的代码非常单一。记住Python不是C.
if
中的括号是可选的。 a
的最后一个元素,请使用a[-1]
,而不是撤消a
,然后获取其第一个元素。使用内置功能!您可以使用maxagent
函数简单地编写修改后的max
:
def maxagent(gamestate, depth):
actions = gamestate.getLegalActions(0)
filteredactions = filter(lambda action: action != Directions.STOP, actions)
# alternatives:
# filteredactions = filter(Directions.STOP.__ne__, actions)
# filteredactions = (a for a in actions if a != Directions.STOP)
bestaction = max(filteredactions,
key=lambda action: self.minvalue(
gamestate.generateSuccessor(0, action),
depth, 1
))
return bestaction
如果您还需要得分,请考虑返回元组。
def maxagent(gamestate, depth)
actions = gamestate.getLegalActions(0)
scores = ( (self.minvalue(gamestate.generateSuccessor(0, a), depth, 1), a)
for a in actions if a != Directions.STOP
)
return max(scores)
...
score, action = maxagent(gamestate, depth)