wolverine777
@wolverine777

Как убрать дубликаты из списка (наивным способом) в питоне?

Привет, я, как начинающий в питоне, озадачился как можно убрать дубликаты из списка пользуясь .remove() - и можно ли вообще это сделать.

Да, я согласен что наиболее логичный подход это вот:
list = [1,4,2,3,4,5,6]
result = []
for i in list:
    if i not in result:
        result.append(i)
print(result)


А что если например мне можно использовать только remove()?

Я пытаюсь слепить вот такое вот но оно не работает,

list = [1,4,2,3,4,5,6]
length = len(list)

for i in range(length):
    if list[i] == list[i+1] and i+1 <= length:
        list.remove(list[i])
print(list)


Помогите пожалуйста разобраться
Спасибо
  • Вопрос задан
  • 3499 просмотров
Решения вопроса 1
ScriptKiddo
@ScriptKiddo
То, что вы делаете - сложно описать как что-то близкое к правильному.

Во-первых: дубли, стоящие не рядом, ваш алгоритм не удалит.
Во-вторых: вы выходите за индекс массива and i+1 <= length
В третьих: переопределяете внутренний тип list

Наиболее правильный метод - использовать множества.

print(list(set(source_list)))

IN
source_list = [1, 4, 2, 3, 4, 5, 6]

print(source_list)
print(list(set(source_list)))


OUT

[1, 4, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6]

Process finished with exit code 0
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@mkone112
Начинающий питонист.
L = [1,4,2,3,4,5,6]
L = list(dict.fromkeys(L))
L >> [1,4,2,3,5,6]
Ответ написан
@antonksa
Я использую в своем коде следующее решение, найденное на stackoverflow:
def build_unique_list_keep_order(seq):
    seen = set()
    seen_add = seen.add
    return [x for x in seq if not (x in seen or seen_add(x))]
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы