楼主: 
veriaw (ver)   
2016-03-23 11:48:19不好意思怕有人误会
得先说明这是作业,但没要求解释以下的问题
最近在写berkelyey pacman
有3个步骤有点不太明白
想请问
(1)
node, actions, visited = fringe.pop()
一次把右边的pop assign给左边的多个variables是什么意思呢?
(2)
fringe.push((coord, actions+[direction], visited+[node]))
push定义如下,我的理解是依序把coord, actions+[direction], visited+[node]
加入到list中,不知是否正确呢?
(3)
for coord, direction, steps in problem.getSuccessors(node):
我的程度只到 for i in list:
有点不太明白for 后面接多个variables跑的意思是什么
#Code:
def depthFirstSearch(problem)
fringe = util.Stack()
    fringe.push( (problem.getStartState(), [], []) )
    while not fringe.isEmpty():
        node, actions, visited = fringe.pop()
        for coord, direction, steps in problem.getSuccessors(node):
            if not coord in visited:
                if problem.isGoalState(coord):
                    return actions + [direction]
                fringe.push((coord, actions + [direction], visited + [node] ))
    return []
#util
class Stack:
    "A container with a last-in-first-out (LIFO) queuing policy."
    def __init__(self):
        self.list = []
    def push(self,item):
        "Push 'item' onto the stack"
        self.list.append(item)
    def pop(self):
        "Pop the most recently pushed item from the stack"
        return self.list.pop()
    def isEmpty(self):
        "Returns true if the stack is empty"
        return len(self.list) == 0
作者: 
ResolaQQ (ResolaQQ)   
2016-03-24 02:36:002的理解如果我没误会的话,是错误的白话点,1的意思是写 a, b, c = (1, 2, 3),则 a = 1, b = 2, c = 32我猜你以为是list.append(a), list.append(b), list.append(c)但实际上是 list.append(  (a, b, c)   )前面是加入三个物件,后面是加入一个物件但它有三个资料3同1,把i代换成1的例子就对了
作者: 
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)   
2016-03-23 12:37:00这三个其实是同一个概念: tuple, 第一个叫做 unpackingon assignment, 就是直接把回传的 tuple 在 = 时展开在 for 循环放多个变量也是这个概念的变形