-1 python sorting algorithm insertion-sort
def insertion_sort(list):
for index in range(1,len(list)):
value = list[index]
i = index - 1
while i>=0:
if value < list[i]:
list[i+1] = list[i]
list[i] = value
i = i - 1
else:
break
a = [7,1,3,5,9,2,3]
print(insertion_sort(a))
Run Code Online (Sandbox Code Playgroud)
此代码取自可汗学院的视频.但是,当我尝试在Jupyter Notebook和IDLE上自己运行它时,它输出None.我无法弄清楚为什么它与视频完全相同.在此先感谢您的帮助.
你的功能在return任何地方都没有声明.如果函数没有return明确的任何内容,它总是返回None.
并且几乎可以肯定的是,这个函数不返回任何东西.
请注意,该函数就地改变了它的参数:
>>> a = [7,1,3,5,9,2,3]
>>> insertion_sort(a)
>>> a
[1, 2, 3, 3, 5, 7, 9]
Run Code Online (Sandbox Code Playgroud)
在Python中,对于执行此操作而不返回任何内容的函数来说,这是惯用的.例如,参见像list.sort和的内置方法list.append.
请注意,在引用的视频中,这正是教师所做的 - 他们不是print结果insertion_sort,他们只是调用它,然后查看变量的值.
此外,一般来说,像这样修改一个值的函数采用命令式动词,如list方法sort,而函数使参数保持不变但返回转换后的值,取一个过去的分词,就像构建一样 -在功能上sorted.
因此,如果这个函数被命名insertion_sorted,那么Python程序员会希望它单独留下它的参数并返回一个新的排序列表; 因为它被命名insertion_sort,所以它们会期望它在原地排序并且不返回任何东西.
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |