Статья Автор: Лебедев Дмитрий

TUZ_7-03_Удаление избыточных элементов из списка

TUZ_7-03_Удаление избыточных элементов из списка

TUZ_7-03_Удаление избыточных элементов из списка
7.3. Удаление избыточных элементов из списка
По условию задачи дается список произвольных элементов. Его нужно проанализировать и удалить избыточные элементы,
чтобы любой элемент исходного списка встречался в списке результата не более n раз.
Например, пусть дан список i = [«Python», 4, 99, «R», 4, «43», 123, 80, 99, «Python», 4] и n = 2.
  • В соответствии с этими условиями в результате должен получиться список
    j = [«Python», 4, 99, «R», 4, «43», 123, 80, 99, «Python»4],
    соответствующий исходному, из которого удалены избыточные элементы так, чтобы их количество не превышало n.
    В списке i все элементы повторяются два раза и только элемент 4 повторяется три раза, поэтому, поскольку n = 2,
    последний элемент 4 исключается из результата.
Ваша задача: написать функцию, которая принимает положительное целое число n и список элементов и возвращает новый список,
не содержащий избыточных элементов, но сохраняющий порядок элементов в исходном списке.
Если n = 0, функция должна вернуть пустой список.
В табл. 7.3 показаны ожидаемые результаты для некоторых входных данных.
Таблица 7.3. Некоторые ожидаемые результаты для задачи удаления избыточных элементов из списка
Items, n Ожидаемый результат
4, 4, 4, 4, 4, 4
4
4, 4, 4, 4
4, 5, 1000, 1, 2, 3
5
4, 5, 1000, 1, 2, 3
0, 0, 0, 0, 2, 0, 0, 0, 0
5
0, 0, 0, 0, 2, 0
1001, python, 1003, world, 1001, 1001
1
1001, python, 1003, world

Алгоритм
Алгоритм принимает исходный список items_list и пороговое значение max_frequency и инициализирует
пустой список top_frequency_items для хранения результата.
Затем создается пустой словарь, ключами в котором служат элементы исходного списка.Значения ключей инициализируются нулями.
В этом словаре подсчитывается количество вхождений каждого элемента в исходном списке.
Если в процессе обхода исходного списка обнаруживается, что какой-то элемент встретился max_frequency или более раз,
то соответствующему ключу присваивается значение max_frequency.
Далее, после создания словаря top_frequency_items, выполняется цикл по списку items_list.
Если соответствующее значение в top_frequency_dict больше 0, то элемент добавляется в список top_frequency_items,
а соответствующее значение в словаре top_frequency_dict уменьшается на 1.
По завершении обхода элементов в items_list возвращается список top_frequency_ items.
Алгоритм генерирует новый список, в котором каждый элемент повторяется не более max_frequency раз.


Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать