我正在寻找一些在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
答案 0 :(得分:0)
在Python中,负索引表示“从头算起”。
因此,some_list[-1]
的意思是“ some_list
的最后一个元素”,some_list[-2]
是之前的元素,依此类推。
看到cur_row, cur_col = cur_path[-1]
时发生的是,cur_path
的最后一个元素被取走了,这显然是两个值的元组,然后将其赋值(这称为“ spread”)到两个变量cur_row
和cur_col
。
例如:
pairs = [(1, 2), (3, 4), (5, 6)]
a, b = pairs[-1]
此后,a
将是5
,而b
将是6
。
人们发表一些您应该学习基本知识的评论是正确的,但是尽管Python有时看似简单,但它也非常擅长让您编写非常简短的语句,需要对语言有一点了解。这是一个很好的例子,因为负索引和扩展都不是大多数编程语言所共有的功能。