如何在 for 循环中更改范围值

How to change a range value in a for loop

在 for 循环内删除值后尝试访问列表中的值时出现索引错误。如何在每次迭代后更改 for 循环中的范围值?该函数本身是将列表作为输入并在新列表中反转列表,但仅通过将一个列表中的元素移到另一个列表中,以便输入列表最终为空。

def minsort(lst):
    new_lst = list()
    counter = 0
    while len(lst) > counter:
        smallest = lst[0]
        for i in range(1, len(lst)):
            if smallest > lst[i]:
                smallest = lst[i]
                new_lst.append(smallest)
                lst.remove(smallest)
                smallest = lst[0]
            else:
                new_lst.append(smallest)
                lst.remove(smallest)
    return new_lst

lst = [3,1,2]
print(minsort(lst))

我得到的错误:

    if smallest > lst[i]:
IndexError: list index out of range

编辑:我这样做时没有任何内置函数,例如 sorted()

如果您尝试按升序对列表进行排序,您可以使用:

new_lst = sorted(lst)

编辑*

好吧,这似乎在没有任何内置函数的情况下工作:

def minsort(lst):
    new_lst = []

    while lst:
        smallest = None
        for item in lst:
            if smallest == None:
                smallest = item
            elif item < smallest:
                smallest = item
        new_lst.append(smallest)
        lst.remove(smallest)
    return new_lst