变量python不正确

时间:2015-11-02 09:28:23

标签: python variables

我的计划的一小部分。 A和B假设不同但是相同。更改后即使A = B.有什么建议。

def reveal_board(location1, location2, a):
    b = a
    for char in board:
        if char == board[location1 - 1]:
            b[location1 - 1] = char
        if char == board[location2 - 1]:
            b[location2 - 1] = char
        else:
            b = b
    print_board(b)
    if board[location1 - 1] == board[location2 - 1]:
        return b
    else:
        return a

2 个答案:

答案 0 :(得分:5)

假设ab是一个更复杂的对象,例如列表或字典,那么在分配a时,您实际上并未复制b = a 。这只会使ab都指向同一个对象。如果您随后修改了b,则还要修改a,反之亦然。

如果您想制作副本,请考虑b = list(a)b = dict(a)之类的内容。或者,更一般地说:

import copy
b = copy.copy(a)

甚至

import copy
b = copy.deepcopy(a)

制作deep copy

答案 1 :(得分:1)

作业b = a并非复制a,而只是复制对a引用的同一列表的引用。要实际复制它,请将作业替换为:

b = a[:]

这将创造一个"浅" a的副本比使用copy更简单,更快。

另外,我建议摆脱b对自己的自我分配。这没有意义。你可以删除它和它上面的else

else:
    b = b