如果我写
,我的功能就完美无缺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)
答案 0 :(得分:1)
您需要将其元素复制到原始列表中,而不是返回结果。所以替换:
return res
使用:
array[:] = res
分配到切片会将列表插入目标列表的该部分。切片[:]
指的是整个列表。
答案 1 :(得分:1)
问题在于声明
array.remove(minimum)
在循环中删除array
中的下一个和下一个元素,所以最后它将保持为空。这是你的功能的副作用。
所以,如果你只使用
sort(array)
返回值未使用,整个效果在清除 array
。
另一方面,如果你使用
array = sort(array)
您将array
的原始值替换为函数的返回值,这是其定义中的局部变量ret
的值。