ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70%Забронировать скидку

Нахождение всех позиций максимального числа в списке Python

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Чтобы найти все индексы максимального значения в списке, используйте функцию enumerate в связке со списочным включением. Сначала определите максимальное значение списка с помощью max(list), а потом найдите индексы, на которых значение списка совпадает с максимальным.

Python
Скопировать код
nums = [4, 9, 1, 9, 6, 9]
max_indices = [i for i, val in enumerate(nums) if val == max(nums)]

Приведенный код возвращает список max_indices, в котором содержатся индексы максимального значения списка nums.

Пройдите тест и узнайте подходит ли вам сфера IT
Пройти тест

Основной алгоритм

Для улучшения производительности сначала определите максимальное значение списка перед его обработкой. Это поможет избежать перевычисления максимума для каждого элемента.

Python
Скопировать код
max_value = max(nums)
max_indices = [index for index, value in enumerate(nums) if value == max_value]

При работе с пустыми списками, укажите параметр default для функции max(), чтобы избежать ошибок:

Python
Скопировать код
nums = []
max_value = max(nums, default=None)
max_indices = [index for index, value in enumerate(nums) if value == max_value] if max_value is not None else []

При анализе данных и изучении распределения максимальных значений в массивах NumPy используйте функцию np.argmax():

Python
Скопировать код
import numpy as np
nums = np.array([4, 9, 1, 9, 6, 9])
max_value = nums.max()
max_indices = np.argwhere(nums == max_value).flatten().tolist()

Косвенные, диагональные и другие "неожиданные повороты"

Работа с многомерными списками

Для многомерных списков или случаев, когда требуется специальное сравнение, используйте аргумент key функции max(), а также лямбда-функции или пользовательские функции.

Экономия "памяти" на добрые старые времена

При работе с большими данными использование генераторов может быть более эффективным в плане использования памяти:

Python
Скопировать код
max_value = max(nums)
max_indices = (index for index, value in enumerate(nums) if value == max_value)
max_indices = list(max_indices)

Игра на вероятности

При анализе больших объемов данных возможно применение вероятностных алгоритмов для оценки распределения максимальных значений и оптимизации поиска.

Визуализация

Представим результаты игры в дартс в виде этажей здания:

Счет:     [2, 9, 9, 3, 9, 6, 5]
Этажи:     [🏢, 🏦, 🏦, 🏢, 🏦, 🏠, 🏡]
                                  
Максимум:  9                         
Позиции: [🥇, 🥈, 🥉]

На диаграмме 🏦 обозначает этажи с максимальными баллами, а 🥇🥈🥉 указывает на позиции максимальных значений.

Рекомендации по лучшим практикам и совместимости

Будьте на волне с Python 3

Все представленные решения совместимы с Python 3 и соответствуют современным нормам и принципам для обеспечения эффективности кода и его поддержки.

Воспользуйтесь преимуществами библиотек

При работе с большими массивами данных или числовыми вычислениями часто эффективно использовать специализированные библиотеки, такие как NumPy.

Отметка сообщества

Решения, которые доказали свою эффективность и готовы к применению в реальной практике, часто получают высокую оценку от сообщества.

Полезные материалы

  1. Как найти все позиции максимального значения в списке? – Stack Overflow – Профессиональное обсуждение и проверенные решения для определения позиций максимального значения в списках Python.
  2. 5. Структуры данных — Документация Python 3.12.2 – Официальная документация Python по списочным включениям.
  3. numpy.argwhere — Руководство NumPy v1.26 – Мощный инструмент NumPy для получения индексов элементов, удовлетворяющих условию.
  4. Python enumerate(): Упрощение циклов с использованием счетчиков – Real Python – Обзор функции enumerate() Python, удобной для контроля индексов при итерации.
  5. Python max() – Инструкция по встроенной функции max() на сайте Programiz.