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_Function - Fatal编程技术网

Python 逐渐从功能列表中调用功能(不带生成器)

Python 逐渐从功能列表中调用功能(不带生成器),python,list,function,Python,List,Function,我在启用绞刑架列表中的函数时遇到问题。以下是问题代码示例-因其长度而缩写: board=[]#A matrix to which I append required letters def func(list1): does sth with list1 return list1 def func2(list2): does sth with list2 return list2 def func3(list3): does sth with lis

我在启用绞刑架列表中的函数时遇到问题。以下是问题代码示例-因其长度而缩写:

board=[]#A matrix to which I append required letters

def func(list1):
    does sth with list1
    return list1

def func2(list2):
    does sth with list2
    return list2

def func3(list3):
    does sth with list3
    return list3

f1=func(board)
f2=func2(f1)
f3=func3(f2)

list_of_func=[f1, f2, f3]
count=0

if sth happens:
     print(list_of_func[count])
     count+=1

但是,它不会打印一个经过逐步修改的电路板,而是完全更改的电路板-由所有功能更改。如何阻止Python改变整个电路板?

您正在函数中传递对同一列表的引用。这意味着,在
func()
中修改的列表与在其他函数中修改的列表相同

您可以创建列表的副本,这样您就可以在每个步骤之后保存列表的副本。您可以使用切片表示法来实现这一点:

f1 = func(board[:])
f2 = func2(f1[:])
f3 = func3(f2[:])
或内置的
列表()

f1 = func(list(board))
f2 = func2(list(f1))
f3 = func3(list(f2))

这样,
f1
f2
f3
将分别持有对不同列表的引用。

您在函数中传递对相同列表的引用。这意味着,在
func()
中修改的列表与在其他函数中修改的列表相同

您可以创建列表的副本,这样您就可以在每个步骤之后保存列表的副本。您可以使用切片表示法来实现这一点:

f1 = func(board[:])
f2 = func2(f1[:])
f3 = func3(f2[:])
或内置的
列表()

f1 = func(list(board))
f2 = func2(list(f1))
f3 = func3(list(f2))

这样一来,
f1
f2
f3
将分别持有对不同列表的引用。

board
list1
list2
list3
都是同一列表的不同名称。如果您需要保留该列表更改的历史记录,则需要在每个步骤中保存一份副本,或者让每个函数制作一份副本并对其进行修改,而不是修改原始列表。我如何做到这一点?
board
list1
list2
list3
对于同一个列表来说都是不同的名称。如果需要保留该列表的更改历史记录,则需要在每个步骤中保存该列表的副本,或者让每个函数复制并修改该列表,而不是修改原始列表。我如何才能做到这一点?