python如何从函数返回列表?传递的列表是不可变的?

Joh*_*ohn 0 python

def insertion_sort(A):
    for j in range(1, len(A)):
        key = A[j]
    i = j - 1
    while (i >= 0) and (A[i] > key):
        A[i+1] = A[i]
        i = i-1
    A[i+1] = key

    return A


print insertion_sort([8, 1, 3, 4, 9, 5, 2])
Run Code Online (Sandbox Code Playgroud)

现在打印: [8, 1, 3, 4, 9, 5, 2]

但我假设,我正在改变列表A,那么为什么返回值相同?

Dan*_*son 6

您当前的缩进代码是错误的.它应该是这样的,对吗?

def insertion_sort(A):
    for j in range(1, len(A)):
        key = A[j]
        i = j - 1
        while (i >= 0) and (A[i] > key):
            A[i+1] = A[i]
            i = i-1
        A[i+1] = key

    return A
Run Code Online (Sandbox Code Playgroud)