Как изменить значение диапазона в цикле for - PullRequest
0 голосов
/ 19 февраля 2020

Я получаю ошибку индекса при попытке получить доступ к значениям из списка после удаления значений, находящихся внутри, для l oop. Как изменить значение диапазона в для l oop после каждой итерации? Сама функция состоит в том, чтобы принимать список в качестве входных данных и инвертировать список в новом списке, но только путем удаления элементов из одного списка в другой, чтобы список ввода заканчивался пустым.

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 ()

1 Ответ

1 голос
/ 20 февраля 2020

Если вы пытаетесь отсортировать список в порядке возрастания, вы можете использовать:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...