【发布时间】:2015-10-16 16:12:00
【问题描述】:
我遇到了一个问题,当我将数组传递给函数时,数组的原始值发生了变化。我下面的例子应该能阐明我的意思。
所以如果我有下降的例子:
def swap(array):
while True:
noChange = True
for i in range(len(array) - 1):
if array[i] > array[i + 1]:
array[i], array[i + 1] = array[i + 1], array[i]
noChange = False
if noChange:
return array
def baseline(array):
array = sorted(array)
return array
array = [20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0]
sortedArray = swap(array)
print array # Result: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
array = [20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0]
sortedArray = baseline(array)
print array # Result: [20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
从上面可以看出,由于某种原因,array 在运行名为 swap 的函数时已更改,但当我运行 baseline 时。在名为swap 的函数中,我尝试将array 的所有实例重命名为localArray 以查看是否有所不同,但我仍然遇到同样的问题。
我确信这是我看过的非常明显的事情,但有人能够解释为什么会发生这种情况吗?
【问题讨论】:
-
@MarkusMeskanen 当我第一次打印
array时,它不应该改变我最初定义的值,不是吗?这就是我遇到问题的部分。