如何交换元组中的元素?

tab*_*has 3 python

我有一个非常具体的问题,我需要知道如何交换列表或元组中的元素.我有一个名为board state的列表,我知道需要交换的元素.我该如何交换它们?在具有二维数组的java中,我可以轻松地执行标准交换技术,但是在这里它说元组赋值是不可能的.

这是我的代码:

board_state = [(0, 1, 2), (3, 4, 5), (6, 7, 8)]

new = [1, 1] # [row, column] The '4' element here needs to be swapped with original
original = [2, 1] # [row, column] The '7' element here needs to be swapped with new
Run Code Online (Sandbox Code Playgroud)

结果应该是:

board_state = [(0, 1, 2), (3, 7, 5), (6, 4, 8)]
Run Code Online (Sandbox Code Playgroud)

我如何交换?

Joh*_*web 6

与字符串一样,元组是不可变的:不可能分配给元组的各个项目.

列表是可变的,所以你转换board_state到一个listlistS:

>>> board_state = [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
Run Code Online (Sandbox Code Playgroud)

然后使用标准的Python习惯用法交换列表中的两个元素:

>>> board_state[1][1], board_state[2][1] = board_state[2][1], board_state[1][1]
>>> board_state
[[0, 1, 2], [3, 7, 5], [6, 4, 8]]
Run Code Online (Sandbox Code Playgroud)