显示(打印)排序列表python(不使用list.sort)



函数的练习我创建了一个函数来对数字列表排序(Python 3.x):

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

使用python解释器我得到这个:

>>> a = [5,3,7,9,1,8,6,2,4]
>>> insertion_sort(a)
>>> print(a)
[1, 2, 3, 4, 5, 6, 7, 8, 9]

如果在python解释器中使用,这个函数可以很好地工作,但我想做更多,并使用输入法来"询问"数字,所以我这样做了…

a = input("Enter a list of numbers separated by a comma: ")
c = set(a)
b = []
b.append(c)
insertion_sort(b)
print (b)

当我运行代码并输入数字537918624时,我得到这个:

[{'8', '9', '2', '3', '1', '6', '7', '4', '5'}]

为什么它不排序,我怎么能让它打印没有引号的列表?

引号表示您的集合中有字符串,而不是整数。input总是会给你一个字符串;您可以使用int()将字符串转换为整数。

另外,您正在为排序函数提供一个列表,其中包含单个项目set。对只有一个元素的列表进行排序没有任何意义。

我将这样处理:

ui = input(...) # take input e.g. "1, 2, 3"
numbers = list(map(int, ui.split(","))) # turn to list of ints [1, 2, 3]
insertion_sort(numbers) # sort the list

没有必要使用set -如果有重复的数字你的排序算法应该能够管理这一点。

您的输入没有逗号-我假设(根据提示!)用户应该真正输入例如5,3,79,... .

最后,注意您不应该调用insertion_sort list的参数,因为这会遮蔽内置的。

相关内容

  • 没有找到相关文章

最新更新