Находим повторяющиеся элементы в списке Python

Находим повторяющиеся элементы в списке Python Статьи

Введение

В данной статье разберём три способа нахождения повторяющихся элементов в неупорядоченном списке Python.

Поиск одинаковых элементов в списке с помощью словаря

Для начала создадим неупорядоченный список с числами и пустой словарь:

unordered_list = [6, 6, 8, 7, 5, 1, 4, 5, 4, 7]
duplicate_elements = {}

Теперь пройдёмся по нашему неупорядоченному списку при помощи цикла for. Внутри цикла добавим условие, что если итерабельный элемент присутствует в словаре duplicate_elements, то прибавляем к значению ключа единицу, т.к. этот элемент уже присутствует в словаре, и был найден его дубликат. Если же условие оказалось ложным, то сработает else, где в словарь будет добавляться новый ключ, которого в нём ранее не было:

unordered_list = [6, 6, 8, 7, 5, 1, 4, 5, 4, 7]
duplicate_elements = {}

for item in unordered_list:
    if item in duplicate_elements:
        duplicate_elements[item] += 1
    else: 
        duplicate_elements[item] = 1

Выведем результат:

unordered_list = [6, 6, 8, 7, 5, 1, 4, 5, 4, 7]
duplicate_elements = {}

for item in unordered_list:
    if item in duplicate_elements:
        duplicate_elements[item] += 1
    else: 
        duplicate_elements[item] = 1

print(duplicate_elements)

# Вывод: {6: 2, 8: 1, 7: 2, 5: 2, 1: 1, 4: 2}

В выводе мы видим, что было найдено две шестёрки, одна восьмёрка, две семёрки, две пятёрки, одна единица и две четвёрки.

Поиск одинаковых элементов в списке с помощью модуля collections

В данном способе для поиска одинаковых элементов в неупорядоченном списке мы будем использовать модуль collections, а точнее класс Counter из него. Сам модуль входит в стандартную библиотеку Python, поэтому устанавливать его не придётся.

Для начала импортируем сам модуль collections и добавим неупорядоченный список:

import collections

unordered_list = [6, 6, 8, 7, 5, 1, 4, 5, 4, 7]

Далее при помощи класса Counter из модуля collections подсчитаем количество повторяющихся элементов:

import collections

unordered_list = [6, 6, 8, 7, 5, 1, 4, 5, 4, 7]
count_frequency = collections.Counter(unordered_list)

Выведем результат в виде словаря:

import collections

unordered_list = [6, 6, 8, 7, 5, 1, 4, 5, 4, 7]
count_frequency = collections.Counter(unordered_list)
print(dict(count_frequency))

# Вывод: {6: 2, 8: 1, 7: 2, 5: 2, 1: 1, 4: 2}

Поиск одинаковых элементов в списке с помощью функции filter()

В данном способе мы просто будем выводить повторяющиеся элементы в списке, но не указывать количество их повторений.

При помощи функции filter() отфильтруем наш список. Внутри неё анонимной функцией lambda будем производить проверку поэлементно, и если определённый элемент встречается больше одного раза, мы добавляем его в count_frequency:

unordered_list = [6, 6, 8, 7, 5, 1, 4, 5, 4, 7]

count_frequency = filter(lambda x: unordered_list.count(x) > 1, unordered_list)

При помощи функции set() преобразуем полученные данные в count_frequency в множество, а множество в список:

unordered_list = [6, 6, 8, 7, 5, 1, 4, 5, 4, 7]

count_frequency = filter(lambda x: unordered_list.count(x) > 1, unordered_list)
count_frequency = list(set(count_frequency))

Выведем полученный результат:

unordered_list = [6, 6, 8, 7, 5, 1, 4, 5, 4, 7]

count_frequency = filter(lambda x: unordered_list.count(x) > 1, unordered_list)
count_frequency = list(set(count_frequency))

print(count_frequency)

# Вывод: [4, 5, 6, 7]

Т.е. в неупорядоченном списке повторяются четвёрки, пятёрки, шестёрки и семёрки.

Заключение

В ходе статьи мы с Вами разобрали целых три способа нахождения повторяющихся элементов в списке Python. Надеюсь Вам понравилась статья, желаю удачи и успехов! 🙂

Admin
Admin
IT Start