为什么这个插入排序算法没有输出?

2024-04-26 01:13:47 发布

您现在位置:Python中文网/ 问答频道 /正文

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))

此代码取自Khan Academy video。然而,当我试着自己在Jupyter笔记本和空闲的时候,它什么也不输出。我不明白为什么和视频里的一模一样。 谢谢你的帮助。你知道吗


Tags: inforindexlenifvaluedefrange
1条回答
网友
1楼 · 发布于 2024-04-26 01:13:47

你的函数没有return语句。如果函数没有显式地return任何内容,它总是返回None。你知道吗

几乎可以肯定,这个函数不会返回任何东西。你知道吗


请注意,函数会在适当的位置改变其参数:

>>> a = [7,1,3,5,9,2,3]
>>> insertion_sort(a)
>>> a
[1, 2, 3, 3, 5, 7, 9]

在Python中,执行此操作的函数通常不返回任何内容。例如,请参阅list.sortlist.append等内置方法。你知道吗

注意,in the cited video,这正是指导者所做的,他们不print,他们只是调用它,然后查看变量的值。你知道吗


另外,通常情况下,对值进行就地变异的函数(如本函数)采用命令式动词,如list方法^{},而保持参数不变但返回转换值的函数采用过去分词,如内置函数^{}。你知道吗

因此,如果这个函数名为insertion_sorted,Python程序员会希望它不使用参数,而是返回一个新的排序列表;因为它名为insertion_sort,所以他们会希望它对参数进行适当排序,而不返回任何内容。你知道吗

相关问题 更多 >