Python 使用插入排序将列表从大到小排序

Python 使用插入排序将列表从大到小排序,python,for-loop,while-loop,Python,For Loop,While Loop,我正在尝试创建一个程序,使用插入排序算法将10个数字的随机列表从大到小排序。也就是说,查找列表中的最大数字并使用.append将其添加到新列表中。如果重复此操作直到列表结束,则新列表将从最大到最小排序。 我已经创建了一个程序,它成功地创建了一个随机列表,找到列表中最大的数字,并将其添加到一个新列表中,唯一的问题是我找不到方法让程序重复10次。谢谢 import random num_list = [] new_list=[] for num in range(10): num_list

我正在尝试创建一个程序,使用插入排序算法将10个数字的随机列表从大到小排序。也就是说,查找列表中的最大数字并使用.append将其添加到新列表中。如果重复此操作直到列表结束,则新列表将从最大到最小排序。 我已经创建了一个程序,它成功地创建了一个随机列表,找到列表中最大的数字,并将其添加到一个新列表中,唯一的问题是我找不到方法让程序重复10次。谢谢

import random
num_list = []
new_list=[]

for num in range(10):
    num_list.append(random.randrange(0,11))

largest=num_list[0]

for repeat in range(len(num_list)):
    for large in num_list:
        if large>largest:
            largest=large
            new_list.append(largest)

print new_list

请注意,此程序的要点是不要使用任何会为我排序列表的函数。

您可以通过在每个步骤中从未排序列表中删除最大值并附加到新列表来完成此操作。这不是很有效,但相当简单

new_list = []

# init random list
num_list = [random.randrange(0, 11) for _ in range(10)]

# while condition will evaluate to False 
# only when num_list is empty

while num_list:  
    # find index of maximum item
    max_index = num_list.index(max(num_list)) 

    # remove item with pop() and append to sorted list
    new_list.append(num_list.pop(max_index))
编辑:如果要避免使用内置函数
max()
,可以使用
reduce()
自行编写


然后在查找
max\u index

的行中,将
max
替换为
mx
。有没有办法不用函数“max”来执行此操作?很遗憾,是@vhariop
mx = lambda x: reduce(lambda xs, ys: xs if xs > ys else ys, x)