如何在python中保持变量相同,即使它引用的值发生了变化?

时间:2017-04-06 11:00:40

标签: python

因此,我正在为学校制作这个项目,在其中我们需要对名为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)没有工作

2 个答案:

答案 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不受影响!