通过修改i来对列表进行排序

2024-04-19 05:32:11 发布

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

我对python非常陌生,我的工作是从最小到最大对列表中的整数进行排序。听起来很简单对吧?但是,我不能使用诸如sort()函数之类的内置函数,我必须修改列表,而不是创建一个新列表(例如pure函数)。你知道吗

这就是我一开始的感受:

lst = [-10, 5, 2, 0, 3, 6, 1, 10]

def sortlist(lst):
    old_list = lst
    new_list = []

    while old_list:
        minimum = old_list[0] 
        for i in old_list: 
            if i < minimum:
                minimum = i
        new_list.append(minimum)
        old_list.remove(minimum)    

    return new_list

然而,经过这么多的努力。我注意到我没有修改它。如何更改此代码以使其修改列表,而不是创建“new\u list”你知道吗


Tags: 函数列表new排序puredef整数sort
3条回答

当值的顺序不正确时,也许可以交换它们,比如在冒泡排序中(虽然不是最有效的,但似乎很适合):

my_list = [3,0,-1,4,3,6]

for i in range(len(my_list)):
    for j in range(len(my_list)):
        if my_list[i] < my_list[j]:
           aux = my_list[i]
           my_list[i] = my_list[j]
           my_list[j] = aux

Wikipedia是你的朋友。他们的Sorting Algorithm文章列出了许多不同的方法。一个相对简单的实现方法叫做Bubble Sort。下面是算法的optimized versions之一的Python直译,该算法在该部分的psuedocode中给出:

def bubbleSort(lst):
    n = len(lst)
    while True:
        newn = 0
        for i in range(1, n):
            # if this pair is out of order
            if lst[i-1] > lst[i]:
                # swap them and remember something changed
                lst[i-1], lst[i] = lst[i], lst[i-1]
                newn = i
        n = newn
        if n == 0: break

my_list = [3, 0, -1, 4, 3, 6]
bubbleSort(my_list)
print(my_list)  # -> [0, -1, 3, 3, 4, 6]

您应该附加到new_list而不是old_list。 另外,list参数应该是lst。你知道吗

相关问题 更多 >