def swap(array, i):
array[i], array[(i+1)%len(array)] = array[(i+1)%len(array)], array[i]
return array
为什么我的交换功能交换到位?
我的意思是在swap函数中,“array”是局部变量,我交换局部变量的元素并返回“array”,那么为什么要在我传递的列表中进行更改。
例如,如果在调用swap(a,0)
之后有一个列表a = [1,2,3,4]
,它应该返回[2,1,3,4]
,但它也会修改我传递的列表“a”?你知道吗
Tags:
与许多面向对象语言一样,Python通过共享而不是复制来传递函数参数。你知道吗
您应该将
array
看作是特定内存位的标签。如果您的函数def f(a)
接受一个名为a
的变量,那么无论何时调用swap(some_variable)
,存储some_variable
的内存都会在您的函数中以a
标签可用。你知道吗这就是为什么在您的示例中更改了变量。如果您想保持
array
的原始值不变,您需要首先复制它,如下面的代码所示。你知道吗相关问题 更多 >
编程相关推荐