python - 逐渐从函数列表中调用函数(无需生成器)

标签 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 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[:])

或者内置的list():

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

这样,f1f2f3 将分别保存对不同列表的引用。

关于python - 逐渐从函数列表中调用函数(无需生成器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54487335/

相关文章:

python - 如何获取列表内嵌套字典的值?

无法从链表中删除第一个节点

python - BeautifulSoup 无法从 wiki 中提取表格

python - 在 sqlalchemy 中反向引用两次相同的名称

python - 使用多级 Pandas Dataframe 的 Seaborn Plot 时遇到问题

Javascript 定义对象属性和函数的新方法?

function - 在多个命名空间中使用记录

python - tensorflow 量化: Array output does not have MinMax information

c# - 将 JSON 字符串解析为 List<string>

c++ - 如何在 C++ 中正确声明和使用 std::array