@ekolodenets

Python. Перебор уникальных значений пропускает значения?

Перебор пропускает 'two' как уникальную (хотя ее нет в списке проверки) и оставляет ее на потом
def list(lst):
    lst_new = []
    while lst:
        lst_temp = []
        for i in lst:
            if i not in lst_temp:
                lst_temp.append(i)
                lst.remove(i)
        lst_new += lst_temp
    return lst_new

l = list(["one", "one", "two", "two", "three", "three", "four", "one"])
d = ["one", "two", "three", "four", "one", "two", "three", "one"] #должно быть так
print(l)
print(d)
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Потому что не надо изменять итерируемую коллекцию.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
SoreMix
@SoreMix Куратор тега Python
yellow
Вы читаете список и параллельно с этим изменяете его.
Вообще, странная конструкция у вас.
Ответ написан
Комментировать
@bbkmzzzz
Не стоит использовать имена, совпадающие с встроенными типами.

Изменение списка по которому идет итерация - тоже плохая идея, при удалении элемента остальные элементы меняют свое положение, но цикл берет следующий элемент, вне зависимости, поменялся порядок или нет, от того и пропуски.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
25 апр. 2024, в 12:20
15000 руб./за проект
25 апр. 2024, в 12:08
300 руб./за проект
25 апр. 2024, в 11:49
25000 руб./за проект