我的函数返回一个空数组,而sort函数有效

时间:2018-01-06 20:24:01

标签: python

如果我写

,我的功能就完美无缺
array = sort(array)

但是当我只使用我的数组上的函数

sort(array)

返回是一个空数组。这可能是一个愚蠢的错误,但我找不到它。我在函数中返回res?

def sort(array):
    res = []
    for i in range(len(array)):
        minimum = array[0]
        for j in range(len(array)):
            if array[j] < minimum:
                minimum = array[j]
        array.remove(minimum)
        res.append(minimum)
    return res


array = [9, 1, 5, 7, 3, 8, 4, 6, 2, 0] 
sort(array) => array returns empty here
print(array)

2 个答案:

答案 0 :(得分:1)

您需要将其元素复制到原始列表中,而不是返回结果。所以替换:

return res

使用:

array[:] = res

分配到切片会将列表插入目标列表的该部分。切片[:]指的是整个列表。

答案 1 :(得分:1)

问题在于声明

array.remove(minimum)

在循环中删除array中的下一个和下一个元素,所以最后它将保持为空。这是你的功能的副作用。

所以,如果你只使用

sort(array)

返回值未使用,整个效果在清除 array

另一方面,如果你使用

array = sort(array)

您将array的原始值替换为函数的返回值,这是其定义中的局部变量ret的值。