Python:创建客户排序方法&循环在列表排序之前停止

时间:2015-11-03 16:47:48

标签: python sorting

我正在尝试创建一个自定义排序方法,在该方法中,我采用不按数字顺序排列的列表,并将列表从最低到最高顺序排列。

该程序应采用以下列表...

arr = [1, 2, 3, 1, 4]

*和打印如下... *

arr = [1, 1, 2, 3, 4]

目前,我的代码是......

def sort(list):
for i in range(1, len(list)):
    if list[i] < list[i - 1]:
        temp = list[i - 1]
        list[i - 1] = list[i]
        list[i] = temp
        print arr       
sort(arr)

我的输出就是这个......

[1, 2, 1, 3, 4]

好像该函数在列表中运行一次,重新排序数字一次并在它们全部按数字顺序停止之前停止。我如何让它在列表中运行多次,以便将所有数字放在应该的位置?

1 个答案:

答案 0 :(得分:3)

你为什么不这样做:

def sort_list(my_list):
    print sorted(my_list)


def main():
    arr = [1, 3, 2, 5, 4]
    sort_list(arr)

if __name__ == "__main__":
    main()

这将有以下输出:

[1, 2, 3, 4, 5]

如果您不想使用内置功能,请执行以下操作:

def sort_list(new_list):
    data_list = [1, 3, 2, 5, 4]

    while data_list:
        minimum = data_list[0]  # arbitrary number in list
        for x in data_list:
            if x < minimum:
                minimum = x
        new_list.append(minimum)
        data_list.remove(minimum)

    print new_list


def main():
    new_list = []
    sort_list(new_list)

if __name__ == "__main__":
    main()

这将具有相同的输出:

[1, 2, 3, 4, 5]