Python:测试函数更改值
我有以下清单:Python:测试函数更改值,python,list,python-3.x,unit-testing,Python,List,Python 3.x,Unit Testing,我有以下清单: DATA = [[5, 3, 0, 0, 7, 0, 0, 0, 0], [6, 0, 0, 1, 9, 5, 0, 0, 0], [0, 9, 8, 0, 0, 0, 0, 6, 0], [8, 0, 0, 0, 6, 0, 0, 0, 3], [4, 0, 0, 8, 0, 3, 0, 0, 1], [7, 0, 0, 0, 2, 0, 0, 0, 6], [0, 6, 0, 0,
DATA = [[5, 3, 0, 0, 7, 0, 0, 0, 0],
[6, 0, 0, 1, 9, 5, 0, 0, 0],
[0, 9, 8, 0, 0, 0, 0, 6, 0],
[8, 0, 0, 0, 6, 0, 0, 0, 3],
[4, 0, 0, 8, 0, 3, 0, 0, 1],
[7, 0, 0, 0, 2, 0, 0, 0, 6],
[0, 6, 0, 0, 0, 0, 2, 8, 0],
[0, 0, 0, 4, 1, 9, 0, 0, 5],
[0, 0, 0, 0, 8, 0, 0, 7, 9]]
在测试函数中,我更改了该列表的1个编号:
def test_check_value(self):
DATA[1][3] = 7...
(我使用其他数字在多个函数中执行此操作)
最后,我的全部清单都变了。如何才能使函数只测试它(使用更改的值),而不更改我的主列表的值?在每次测试开始时使用
copy.deepcopy
>>> import copy
>>> l1 = [[1, 2], [3, 4]]
>>> l2 = copy.deepcopy(l1)
>>> l2[0][0] = 9
>>> l2
[[9, 2], [3, 4]]
>>> l1
[[1, 2], [3, 4]]
请注意,它工作得很好,因为在嵌套列表中保留整数。如果是可修改的数据结构,
deepcopy
将创建新实例。在每个测试开始时使用copy.deepcopy
>>> import copy
>>> l1 = [[1, 2], [3, 4]]
>>> l2 = copy.deepcopy(l1)
>>> l2[0][0] = 9
>>> l2
[[9, 2], [3, 4]]
>>> l1
[[1, 2], [3, 4]]
请注意,它工作得很好,因为在嵌套列表中保留整数。如果是可修改的数据结构,
deepcopy
将创建新实例。在每个测试开始时使用copy.deepcopy
>>> import copy
>>> l1 = [[1, 2], [3, 4]]
>>> l2 = copy.deepcopy(l1)
>>> l2[0][0] = 9
>>> l2
[[9, 2], [3, 4]]
>>> l1
[[1, 2], [3, 4]]
请注意,它工作得很好,因为在嵌套列表中保留整数。如果是可修改的数据结构,
deepcopy
将创建新实例。在每个测试开始时使用copy.deepcopy
>>> import copy
>>> l1 = [[1, 2], [3, 4]]
>>> l2 = copy.deepcopy(l1)
>>> l2[0][0] = 9
>>> l2
[[9, 2], [3, 4]]
>>> l1
[[1, 2], [3, 4]]
请注意,它工作得很好,因为在嵌套列表中保留整数。如果是可修改的数据结构,
deepcopy
将创建新实例。您可以在本地复制列表,为此,您可以使用该函数
import copy
def test_check_value(self):
local_list = copy.deepcopy(DATA)
local_list[1] = 0
我认为有趣的是,使用内置的
list()
函数复制嵌套列表不起作用,因此在本例中必须使用copy.deepcopy
。感谢@Bartosz Marcinkowski指出这一点
有关列表副本的详细信息,请参见您可以在本地复制列表,为此,您可以使用该功能
import copy
def test_check_value(self):
local_list = copy.deepcopy(DATA)
local_list[1] = 0
我认为有趣的是,使用内置的
list()
函数复制嵌套列表不起作用,因此在本例中必须使用copy.deepcopy
。感谢@Bartosz Marcinkowski指出这一点
有关列表副本的详细信息,请参见您可以在本地复制列表,为此,您可以使用该功能
import copy
def test_check_value(self):
local_list = copy.deepcopy(DATA)
local_list[1] = 0
我认为有趣的是,使用内置的
list()
函数复制嵌套列表不起作用,因此在本例中必须使用copy.deepcopy
。感谢@Bartosz Marcinkowski指出这一点
有关列表副本的详细信息,请参见您可以在本地复制列表,为此,您可以使用该功能
import copy
def test_check_value(self):
local_list = copy.deepcopy(DATA)
local_list[1] = 0
我认为有趣的是,使用内置的
list()
函数复制嵌套列表不起作用,因此在本例中必须使用copy.deepcopy
。感谢@Bartosz Marcinkowski指出这一点
有关列表副本的更多信息,请参见您似乎已将列表定义为全局。因此,为了避免这种情况,您需要将列表副本传递给函数,您可以使用
[a[:]For a in DATA]
复制嵌套列表或使用copy.deepcopy()
:
似乎您已将列表定义为global。因此,为了适应这种情况,您需要将列表的副本传递给函数,您可以使用
[a[:]用于a in DATA]
复制嵌套列表或使用copy.deepcopy()
:
似乎您已将列表定义为global。因此,为了适应这种情况,您需要将列表的副本传递给函数,您可以使用
[a[:]用于a in DATA]
复制嵌套列表或使用copy.deepcopy()
:
似乎您已将列表定义为global。因此,为了适应这种情况,您需要将列表的副本传递给函数,您可以使用
[a[:]用于a in DATA]
复制嵌套列表或使用copy.deepcopy()
:
在OP情况下不起作用。您需要deepcopy才能使其适用于嵌套列表。我错过了它,谢谢您指出。我将相应地编辑它。在OP情况下不起作用。您需要deepcopy才能使其适用于嵌套列表。我错过了它,谢谢您指出。我将相应地编辑它。在OP情况下不起作用。您需要deepcopy才能使其适用于嵌套列表。我错过了它,谢谢您指出。我将相应地编辑它。在OP情况下不起作用。您需要deepcopy才能使其适用于嵌套列表。我错过了它,谢谢您指出。我将相应地编辑它。在OP情况下不起作用。副本包含对嵌套在全局列表中的列表的引用。@BartoszMarcinkowski是的,我想这是一个嵌套列表,修复了!在OP情况下不起作用。副本包含对嵌套在全局列表中的列表的引用。@BartoszMarcinkowski是的,我想这是一个嵌套列表,修复了!在OP情况下不起作用。副本包含对嵌套在全局列表中的列表的引用。@BartoszMarcinkowski是的,我想这是一个嵌套列表,修复了!在OP情况下不起作用。副本包含对嵌套在全局列表中的列表的引用。@BartoszMarcinkowski是的,我想这是一个嵌套列表,修复了!