Как сделать — Удалить дубликаты Python из списка
Сначала у нас есть список, который содержит дубликаты:
Список с дубликатами
mylist = [«a», «b», «a», «c», «c»]
mylist = list(dict.fromkeys(mylist))
print(mylist)
Создайте словарь, используя элементы списка в качестве ключей. Это автоматически удалит все дубликаты, поскольку словари не могут иметь дубликатов ключей.
Создать словарь
mylist = [«a», «b», «a», «c», «c»]
mylist = list( dict.fromkeys(mylist) )
print(mylist)
Затем преобразуйте словарь обратно в список:
Преобразовать в список
mylist = [«a», «b», «a», «c», «c»]
mylist = list( dict.fromkeys(mylist) )
print(mylist)
Теперь у нас есть список без каких-либо дубликатов, и он имеет тот же порядок, что и исходный список.
Распечатайте список, чтобы продемонстрировать результат
Распечатать список
mylist = [«a», «b», «a», «c», «c»]
mylist = list(dict.fromkeys(mylist))
print(mylist)
Создание функции
Если вы хотите иметь функцию, в которой вы можете отправлять свои списки и получать их обратно без дубликатов, вы можете создать функцию и вставить код из приведенного выше примера.
Пример
def my_function(x):
return list(dict.fromkeys(x))
mylist = my_function([«a», «b», «a», «c», «c»])
Объяснение примера
Создайте функцию, которая принимает список в качестве аргумента.
Создать функцию
def my_function(x):
return list(dict.fromkeys(x))
mylist = my_function([«a», «b», «a», «c», «c»])
Создайте словарь, используя элементы этого списка в качестве ключей.
Создать словарь
def my_function(x):
return list( dict.fromkeys(x) )
mylist = my_function([«a», «b», «a», «c», «c»])
Преобразовать словарь в список.
Преобразовать в список
def my_function(x):
return list( dict.fromkeys(x) )
mylist = my_function([«a», «b», «a», «c», «c»])
Возврат списка
def my_function(x):
return list(dict.fromkeys(x))
mylist = my_function([«a», «b», «a», «c», «c»])
Вызовите функцию со списком в качестве параметра:
Вызов функции
def my_function(x):
return list(dict.fromkeys(x))
mylist = my_function([«a», «b», «a», «c», «c»])
Вывод результата
def my_function(x):
return list(dict.fromkeys(x))
mylist = my_function([«a», «b», «a», «c», «c»])
print(mylist)
Мы только что запустили
SchoolsW3 видео
ВЫБОР ЦВЕТА
курс сегодня!
Сообщить об ошибке
Если вы хотите сообщить об ошибке или внести предложение, не стесняйтесь отправлять на электронное письмо:
Ваше предложение:
Спасибо Вам за то, что помогаете!
Ваше сообщение было отправлено в SchoolsW3.
ТОП Учебники
ТОП Справочники
ТОП Примеры
Получить сертификат
SchoolsW3 оптимизирован для бесплатного обучения, проверки и подготовки знаний. Примеры в редакторе упрощают и улучшают чтение и базовое понимание. Учебники, ссылки, примеры постоянно пересматриваются, чтобы избежать ошибок, но не возможно гарантировать полную правильность всего содержания. Некоторые страницы сайта могут быть не переведены на РУССКИЙ язык, можно отправить страницу как ошибку, так же можете самостоятельно заняться переводом. Используя данный сайт, вы соглашаетесь прочитать и принять Условия к использованию, Cookies и политика конфиденциальности.
Удаление дубликатов в массиве
Мне надо вывести массив без повторений с самого правого вхождения.
входные данные
6
1 5 5 1 6 1
выходные данные
3
5 6 1
входные данные
5
2 4 2 4 4
выходные данные
2
2 4
входные данные
5
6 6 6 6 6
выходные данные
1
6
Вот код, но я не знаю как выводить с самого правого вхождения.
1 2 3 4 5 6 7 8 9
n = int(input()) a = [int(i) for i in input().split()] b = [] for i in range(0, n-1): if a[i] not in b: b.append(a[i]) print(b) print(len(b)) print(*b)
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Удаление неявных дубликатов Series
Добрый день! В спойлере список названий населенных пунктов. Подскажите пожалуйста как можно.
Удаление дубликатов из массива словарей
Всем добрый день! Пытаюсь удалить дубликаты по name и gender в словаре l l= for i in.
Удаление дубликатов строк из файла
есть два списка доменов list1 и list2 list1 — список на 10+ млн list2 — каждый раз новый нужно.
Поиск в папке дубликатов и их удаление
Добрый день! Пишу программу, целью которой является поиск в папке дубликатов и их удаление.

Удаление из строки пробелов и дубликатов
Задача: Вводится строка. Требуется удалить из нее повторяющиеся символы и все пробелы. Без.
3540 / 2144 / 566
Регистрация: 02.09.2015
Сообщений: 5,435
1 2 3 4 5 6 7 8 9 10 11
_ = int(input()) a = map(int, reversed(input().split())) used = set() result = [] for x in a: if x not in used: used.add(x) result.append(x) print(len(result)) print(*reversed(result))
Регистрация: 23.02.2021
Сообщений: 67
в этом и вся проблема, что мне не надо переворачивать список, мне надо в новый список кидать последнее вхождение числа.
3540 / 2144 / 566
Регистрация: 02.09.2015
Сообщений: 5,435
Сообщение от uarts 
в этом и вся проблема, что мне не надо переворачивать список, мне надо в новый список кидать последнее вхождение числа.
Не вижу проблемы.
/upd
Сообщение от uarts 
что мне не надо переворачивать список
И список не переворачивается, если ты не заметил. reversed возвращает генератор, а по совместимости итератор. Исходный список не изменяется.
Регистрация: 23.02.2021
Сообщений: 67
извини, просто неправильно цикл for запускал
Добавлено через 47 секунд
1 2 3 4 5 6 7 8 9 10 11
n = int(input()) a = [int(i) for i in input().split()] b = [] for i in a: if i not in b: b.append(i) else: b.remove(i) b.append(i) print(len(b)) print(*b)
Если, кому-то надо
![]()
1354 / 651 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
1 2 3 4 5 6 7 8 9 10 11 12
import random def umg(n): mlist = [random.randint(1, 10) for i in range(n)] print(mlist) print(list(set(mlist))) if __name__ == '__main__': umg(n=5)
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Строки. Удаление дубликатов
Очень похожее задание, 1047. Remove All Adjacent Duplicates In String, применил тот же код.

Сжатие файла посредством удаление дубликатов
Уважаемые, кто может помочь в решении задачки? Дан символьный файл. Произвести «сжатие» этого.
Работа с массивом, удаление пустых ячеек со сдвигом влево, удаление дубликатов в массиве
Имеется рабочая область (E10:T40), весь процесс форматирования таблицы выполняется в этой границе. .
Удаление дубликатов в 2-х мерном массиве
Всем добрый день! Подскажите как можно избавиться от дубликатов в двух мерном массиве . Например.
Удаление дубликатов в многомерном массиве
Разобрали xml. Получили массив со множеством подмассивов товаров. Теперь необходимо убрать дубли.
Удаление повторяющихся элементов из кругового связанного списка в Python
В данном руководстве мы создадим круговой связанный список Python и удалим повторяющиеся узлы из списка. Мы сравним узел с остальным списком и проверим наличие дубликатов. Если дубликат найден, удалим повторяющийся узел из списка.
1->2->2->4->3
В приведенном выше списке мы видим, что узел 2 присутствует в списке дважды. Итак, у нас будет текущий узел, который будет перебирать список. Индекс будет указывать на узел, следующий за текущим. Temp будет указывать на узел, предшествующий индексу. Когда дубликат найден, мы удаляем его, указывая temp.next на index.next.
Список выше после удаления дубликатов:
1->2->4->3
Алгоритм
- Определите класс Node, который представляет узел в списке. Он имеет два свойства data и next, которые будут указывать на следующий узел.
- Определите еще один класс для создания кругового связанного списка, и он имеет два узла: начало и конец.
- removeDuplicate() удалит повторяющиеся узлы из списка:
- Текущий узел будет указывать на голову и использоваться для перемещения по списку.
- Индекс будет указывать на узел, следующий за текущим, а temp будет указывать на предыдущий узел для индексации.
- Мы сравним current.data с index.data. Если совпадение найдено, удалим повторяющиеся данные, указав temp рядом с индексом next.
- Увеличим index до index.next и текущий до текущего .next.
- Повторим шаги с c по d, пока все дубликаты не будут удалены.
Программа
#Represents the node of list. #Represents the node of list. class Node: def __init__(self,data): self.data = data; self.next = None; class CreateList: #Declaring head and tail pointer as null. def __init__(self): self.head = Node(None); self.tail = Node(None); self.head.next = self.tail; self.tail.next = self.head; #This function will add the new node at the end of the list. def add(self,data): newNode = Node(data); #Checks if the list is empty. if self.head.data is None: #If list is empty, both head and tail would point to new node. self.head = newNode; self.tail = newNode; newNode.next = self.head; else: #tail will point to new node. self.tail.next = newNode; #New node will become new tail. self.tail = newNode; #Since, it is circular linked list tail will point to head. self.tail.next = self.head; #Removes duplicate from the list def removeDuplicate(self): #Current will point to head current = self.head; if(self.head == None): print("List is empty"); else: while(True): #Temp will point to previous node of index. temp = current; #Index will point to node next to current index = current.next; while(index != self.head): #If current node is equal to index data if(current.data == index.data): #Here, index node is pointing to the node which is duplicate of current node #Skips the duplicate node by pointing to next node temp.next = index.next; else: #Temp will point to previous node of index. temp = index; index= index.next; current =current.next; if(current.next == self.head): break; #Displays all the nodes in the list def display(self): current = self.head; if self.head is None: print("List is empty"); return; else: #Prints each node by incrementing pointer. print(current.data); while(current.next != self.head): current = current.next; print(current.data); print("\n"); class CircularLinkedList: cl = CreateList(); #Adds data to the list cl.add(1); cl.add(2); cl.add(3); cl.add(2); cl.add(2); cl.add(4); print("Originals list: "); cl.display(); #Removes duplicate nodes cl.removeDuplicate(); print("List after removing duplicates: "); cl.display();
Originals list: 1 2 3 2 2 4 List after removing duplicates: 1 2 3 4
Удалить повторяющиеся значения из списка Python
В этом посте мы обсудим, как удалить повторяющиеся значения из списка в Python.
1. Использование набора
Простое решение — вставить все элементы из списка в набор, исключающий дубликаты. Обратите внимание, что это вернет все уникальные значения, но не сможет сохранить исходный порядок элементов в списке.
if __name__ == ‘__main__’ :
nums = [ 1 , 5 , 2 , 1 , 4 , 5 ]
nums [ : ] = list ( set ( nums ) )
print ( nums ) # [1, 2, 4, 5]
2. Использование понимания списка
Если вам нужно сохранить порядок вставки элементов в список, вы можете использовать понимание списка с помощью index() функция. Следующий код демонстрирует это.
if __name__ == ‘__main__’ :
nums = [ 1 , 5 , 2 , 1 , 4 , 5 ]
nums [ : ] = [ x for i , x in enumerate ( nums ) if i == nums . index ( x ) ]
print ( nums ) # [1, 5, 2, 4]
Чтобы повысить производительность, избавьтесь от index() и использовать set вместо этого структура данных:
if __name__ == ‘__main__’ :
nums = [ 1 , 5 , 2 , 1 , 4 , 5 ]
visited = set ( )
nums [ : ] = [ x for x in nums if x not in visited and not visited . add ( x ) ]
print ( nums ) # [1, 5, 2, 4]
3. Использование сокращения
В качестве альтернативы вы можете использовать уменьшить операцию в списке, чтобы удалить из него дубликаты. Вот как будет выглядеть код:
from functools import reduce
if __name__ == ‘__main__’ :
nums = [ 1 , 5 , 2 , 1 , 4 , 5 ]
nums [ : ] = reduce ( lambda l , x : l if x in l else l + [ x ] , nums , [ ] )
print ( nums ) # [1, 5, 2, 4]
4. Использование словаря
До версии Python 3.7 вы можете использовать OrderedDict , который может запоминать порядок вставки. Идея состоит в том, чтобы использовать fromkeys() функция класса, которая возвращает новый словарь со значениями по умолчанию None . Чтобы получить отдельные ключи, просто преобразуйте их в список, как показано ниже:
