我想在顶点数组上运行压缩算法n^2次,以便计算图的最小割。在第一次for循环迭代之后,数组被修改,其余的迭代使用修改后的数组,这不是我想要的。如何模拟指针,以便在每次for循环迭代期间拥有原始的输入数组?
def n_squared_runs(array):
min_cut, length = 9999, len(array) ** 2
for i in range(0, length):
# perform operation on original input array
array = contraction(array)
if len(array) < min_cut:
min_cut = len(array)
return min_cut
contraction()
操作应该创建并返回一个新的数组,而不是就地修改它作为参数接收到的数组-还应该为返回的数组使用不同的变量名,显然如果同时使用array
来命名参数和局部变量,参数将在函数内被覆盖。你知道吗这与指针无关,而是与正在使用的函数的契约有关。如果必须保留原始的
array
,那么helper函数需要确保强制执行此限制。注意,在Python中,如果这样做:由
f
函数接收的array
与声明为它的“外部”的f
相同—事实上,f
接收的所有内容都是对数组的引用,而不是它的副本—因此,在f
内部对数组所做的任何修改都将自然地反映在外部。另外,值得一提的是,Python中的所有参数都得到passed by value,并且在该语言中没有指针或按引用传递这样的东西。你知道吗不要覆盖原始数组。你知道吗
相关问题 更多 >
编程相关推荐