这是什么意思?为什么需要它? cur_row,cur_col = cur_path [-1]

时间:2020-02-04 06:34:38

标签: python python-3.x

我正在寻找一些在python中迷宫的BFS遍历代码。第一次使用python编写代码时,我想了解cur_row,cur_col = cur_path [-1]的原因是什么,特别是为什么需要[-1]

def bfs(maze):
    queue = []
    visited = set()
    queue.append([maze.getStart()])
    while queue:
        cur_path = queue.pop(0)
        cur_row, cur_col = cur_path[-1]
        if (cur_row, cur_col) in visited:
            continue
        visited.add((cur_row, cur_col))
        if maze.isObjective(cur_row, cur_col):
            return cur_path, len(visited)
        for item in maze.getNeighbors(cur_row, cur_col):
            if item not in visited:
                queue.append(cur_path + [item])
    return [], 0

1 个答案:

答案 0 :(得分:0)

在Python中,负索引表示“从头算起”。

因此,some_list[-1]的意思是“ some_list的最后一个元素”,some_list[-2]是之前的元素,依此类推。

看到cur_row, cur_col = cur_path[-1]时发生的是,cur_path的最后一个元素被取走了,这显然是两个值的元组,然后将其赋值(这称为“ spread”)到两个变量cur_rowcur_col

例如:

pairs = [(1, 2), (3, 4), (5, 6)]
a, b = pairs[-1]

此后,a将是5,而b将是6

人们发表一些您应该学习基本知识的评论是正确的,但是尽管Python有时看似简单,但它也非常擅长让您编写非常简短的语句,需要对语言有一点了解。这是一个很好的例子,因为负索引和扩展都不是大多数编程语言所共有的功能。