如果您想out
保留最后一个列表/元组的值nodes
而不将它们重置为0.0
您需要创建该对象的副本(nodes[-1]
)或手动将它们复制到新的列表/元组对象中,如果我理解正确的话,并且那是你的目标。您当前只是创建对 nodes[-1] 的引用,然后再遍历二维数组并将所有值重置为0.0
,这意味着out
仍将引用您重置为0.0
值的内存中的所指对象。
out = nodes[-1].copy() # This is the list/tuple with the (non-reset) values that you want to return
... # iterate through the array here and reset
return out
这将返回最后一个元素的副本(即对内存中新的唯一nodes
引用对象的新引用),以及创建副本时(在重置迭代之前)所处的状态。
不确定我是否理解正确,但忘记了列表和元组是Python 中的对象并且行为如此是一个容易犯的错误。
这意味着: l0 = [0, 1] l1 = l0 l2 = l0.copy() l0.append(2)
print(l0) # prints [0, 1, 2]
print(l1) # prints [0, 1, 2]
print(l2) # prints [0, 1]
l0
并且l1
是对内存中同一对象/所指对象的两个引用。通过copy()
操作l2
成为对内存中唯一且不相同的所指对象的引用。
另外:请注意 list.copy() 正如评论中所指出的那样,仅在 Python 3 中可用,并返回浅拷贝。使用copy.copy()
/copy.deepcopy()
分别创建浅/深拷贝;该模块在Python 2和Python 3中可用。或者,可以通过 生成列表的浅表list(list_to_copy)
副本。
此处的文档: