因此,我正在为学校制作这个项目,在其中我们需要对名为board的列表进行更改。我们还必须返回我们以序列形式所做的更改。我将“board”定义为元组和集合的列表,并创建了一个更改“board”中特定集合的函数,然后我创建了另一个看起来像这样的函数:
def function (board,pos):
#pos is a tuple (x,y)
begin_open_positions = board[2]
disclose_help(board,pos)
#this function changes the board
end_open_positions = board[2]
added_pos = begin_open_positions-end_open_positions
return added_pos
#board at the start = [(4, 4), [(0, 0)], set(), ((0, 0), (0, 1), (0, 1))]
#board at the end =[(4, 4), [(0, 0)], {(1, 2), ... ,(1, 1)}, ((0, 0),...)]
问题是为什么我的begin_open_position发生了变化,我怎样才能改变它,所以它不会改变并保持(在这种情况下)set()。
披露帮助功能只是增加了董事会职位[2]
编辑:我试图使用copy.copy(x)没有工作
答案 0 :(得分:1)
也许你需要:
import copy
b = copy.deepcopy(a)
# apply some changes to `a` will not affect `b`
答案 1 :(得分:0)
您可以使用copy_list=old_list[:]
- 创建切片
>>> a=[1,2,3]
>>> a
[1, 2, 3]
>>> b=a[:]
>>> b
[1, 2, 3]
>>> b.insert(2,5)
>>> b
[1, 2, 5, 3]
>>> a
[1, 2, 3]
可以看出,在修改新列表b
时,旧列表a
不受影响!