Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:测试函数更改值_Python_List_Python 3.x_Unit Testing - Fatal编程技术网

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是的,我想这是一个嵌套列表,修复了!