Станьте веб-разработчиком с нуля за 15 месяцев на курсе онлайн-университета Skypro. Преподаватели — практикующие эксперты из VK, «Альфа-Банка», Skyeng и других крупных компаний. В программе нет лишней теории, зато много практических заданий, а результаты курсовых можно положить в портфолио. Специалисты центра карьеры помогут с резюме, сопроводительными письмами и собеседованиями.
В работе с Python часто возникают ситуации, когда необходимо удалять дубликаты из списка, сохраняя при этом их изначальный порядок. Рассмотрим простой пример, когда есть список чисел:
1 | numbers = [ 1 , 2 , 3 , 2 , 1 , 5 , 6 , 5 , 5 , 5 ] |
Предположим, что требуется получить список уникальных чисел, но в том порядке, в котором они встречаются в исходном списке. Использование типового Python подхода с преобразованием списка в множество (set) не подойдет, так как множества не сохраняют порядок элементов.
Как же можно решить эту задачу на Python? Один из способов — использование так называемого словаря (dict), который появился в Python 3.7.
Словари в Python — это структура данных, которая хранит данные в виде пар «ключ-значение». Сохраняя элементы списка как ключи словаря, можно гарантировать, что все они будут уникальными, так как в словаре не может быть двух одинаковых ключей. Более того, начиная с версии Python 3.7, словари по умолчанию сохраняют порядок вставки элементов.
Вот как можно использовать этот подход для удаления дубликатов из списка, сохраняя порядок:
1 2 3 | numbers = [ 1 , 2 , 3 , 2 , 1 , 5 , 6 , 5 , 5 , 5 ] numbers_unique = list ( dict .fromkeys(numbers)) print (numbers_unique) |
В результате выполнения этого кода получится список [1, 2, 3, 5, 6]
, в котором сохранен порядок чисел из исходного списка.
Итак, удаление дубликатов из списка в Python, сохраняя порядок, можно выполнить с помощью словаря. Этот подход является вполне «Pythonic», то есть соответствует стилю и идеологии языка Python.
На курсе Skypro «Веб-разработчик» освоите JavaScript, GitHub, Tilda, Postman, HTML, CSS и другие программы и инструменты, научитесь решать реальные задачи разработчика и работать в команде. Все учебные проекты можно положить в портфолио и устроиться на работу по новой специальности еще в процессе обучения.
Добавить комментарий