我最近回答过一个问题用户遇到麻烦,因为他们将多维数组附加到另一个数组,并且在我的回答中引起了我的注意,可以使用可迭代解包来填充x
and y
值并分配给board[x][y]
在同一条线上。
我原以为这会引发错误x
and y
当时还没有被定义,因为,即使在iterable-unpacking
标签上写着:
可迭代的元素是同时地分配给多个值
这可以被视为在以下示例中起作用:
>>> board = [[0, 0], [0, 0]]
>>> move = [0, 1, 2]
>>> x, y, board[x][y] = move
>>> board
[[0, 2], [0, 0]]
这与以下内容相同:
>>> board = [[0, 0], [0, 0]]
>>> move = [0, 1, 2]
>>> x = move[0]
>>> y = move[1]
>>> board[x][y] = move[2]
>>> board
[[0, 2], [0, 0]]
然而,在计算斐波那契数列时,使用:
a, b = b, a + b
它不会评估为:
a = b
b = a + b
当与以下内容交换值时:
a, b = b, a
它不会评估为:
a = b
b = a
那么为什么这在第一个示例中有效呢?