запрос списка, функции в функции - PullRequest
0 голосов
/ 02 августа 2010

у меня есть функция:

       I need to first reverse the list and then take an entry from it.

Ранее я делал 3 функции, но теперь я определяю основную функцию и две другие функции в ней.

1 Ответ

4 голосов
/ 02 августа 2010

Ваш код очень не пифоничен. Помните, что Python - это не C.

  1. Точка с запятой необязательна.
  2. Скобки в if необязательны.
  3. Чтобы получить последний элемент списка a, используйте a[-1], не обращая a, затем получите его первый элемент.
  4. Используйте встроенные функции! Ваш модифицированный 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...