Python语法一行循环

时间:2015-02-24 23:11:59

标签: python syntax

我正在尝试理解我在网上看到的一些代码。我不确定\做了什么。这是一个带递归调用的数组吗?你能帮我把它放到一个多行循环中让我能理解吗?

actionList = [ \
        (self.miniMaxHelp(gameState.generateSuccessor(agentIndex, k), \
        newDepth, ind)[0], k) for k in gameState.getLegalActions(agentIndex)]

3 个答案:

答案 0 :(得分:4)

你所拥有的是一个(相当复杂的)list-comprehension

该行末尾的\是python""在下一行继续此操作"标记。但是,在这种情况下,它们是完全没有必要的,因为如果没有设置括号,大括号或方括号,python将继续到下一行。

e.g:

f = 1 + \
    2

与:

相同
f = 1 + 2

与以下内容相同:

f = (1 +
     2)

类似地,

lst = [1, 2]

与:

相同
lst = [1, \
       2]
# OR
lst = [
  1,
  2
]

答案 1 :(得分:0)

如果答案评论会保留格式,那么就会去那里。但我猜测反斜杠是为了保持80字符宽度格式而没有奇怪的结构,如

actionList = [(self.miniMaxHelp(gameState.generateSuccessor(agentIndex, k), 
                                newDepth, ind)[0], k)
              for k in gameState.getLegalActions(agentIndex)]

或将该列表理解完全拆分为for loop

actionList = []
for k in gameState.getLegalActions(agentIndex):
    actionList.append((self.miniMaxHelp(gameState.generateSuccessor(agentIndex, k),
                                        newDepth, ind)[0], k))

答案 2 :(得分:0)

这就是那段代码所做的,以更清晰的格式:

actionList = []
for k in gameState.getLegalActions(agentIndex):
    successor = gameState.generateSuccessor(agentIndex, k)
    x = self.miniMaxHelp(successor, newDepth, ind)[0]
    actionList.append((x, k))