Получение n элементов списка в порядке от наибольшего и наименьшего значений в Python

Бизнес

Если вы хотите получить n элементов списка (массива) в порядке от наибольшего или наименьшего значения в Python, и n=1, вы можете использовать следующую встроенную функцию.

  • max()
  • min()

Если n>1, есть два способа отсортировать список или использовать модуль heapq стандартной библиотеки.

  • Получение максимального и минимального значений: max(),min()
  • Получить n элементов в порядке возрастания максимального и минимального значения:сортировать
  • Получить n элементов в порядке возрастания максимального и минимального значения:heapqМодуль

Если количество извлекаемых элементов велико, то эффективнее сначала отсортировать их с помощью sorted() или sort(), а если количество мало, то более эффективны nargest() и nsmallest() из модуля heapq.

Чтобы получить индексы максимального и минимального значений, используйте max(), min() и index().

Получение максимального и минимального значений: max(), min()

Чтобы получить максимальный и минимальный элементы списка, используйте встроенные функции max() и min().

l = [3, 6, 7, -1, 23, -10, 18]

print(max(l))
# 23

print(min(l))
# -10

Получить n элементов в порядке максимального и минимального значения: Сортировать

Если вы хотите получить n элементов списка в порядке от наибольшего или наименьшего значения, первый метод — это сортировка (sort) списка.

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

Переключая возрастающий\descending порядок с помощью аргумента reverse и выбирая любое количество срезов сверху, можно получить n элементов в порядке от наибольшего\минимального значения списка.

ld = sorted(l, reverse=True)
print(ld)
# [23, 18, 7, 6, 3, -1, -10]

print(ld[:3])
# [23, 18, 7]

la = sorted(l)
print(la)
# [-10, -1, 3, 6, 7, 18, 23]

print(la[:3])
# [-10, -1, 3]

Вы можете написать их все в одной строке.

print(sorted(l, reverse=True)[:3])
# [23, 18, 7]

print(sorted(l)[:3])
# [-10, -1, 3]

Если вы не против изменить порядок исходного списка, вы можете использовать метод sort().

print(l)
# [3, 6, 7, -1, 23, -10, 18]

l.sort(reverse=True)
print(l[:3])
# [23, 18, 7]

print(l)
# [23, 18, 7, 6, 3, -1, -10]

l.sort()
print(l[:3])
# [-10, -1, 3]

print(l)
# [-10, -1, 3, 6, 7, 18, 23]

Получить n элементов в порядке возрастания максимального и минимального значения: heapqМодуль

Если вы хотите получить n элементов списка в порядке от наибольшего или наименьшего значения, вы можете использовать модуль heapq.

Используйте следующую функцию в модуле heapq. В этом случае исходный список не будет изменен.

  • nlargest()
  • nsmallest()

Первый аргумент — это количество элементов, которые нужно получить, а второй аргумент — это итерабельность (список и т.д.), на которую нужно нацелиться.

import heapq

l = [3, 6, 7, -1, 23, -10, 18]

print(heapq.nlargest(3, l))
# [23, 18, 7]

print(heapq.nsmallest(3, l))
# [-10, -1, 3]

print(l)
# [3, 6, 7, -1, 23, -10, 18]

Как я уже писал в начале, если количество извлекаемых элементов велико, то эффективнее сначала отсортировать их с помощью sorted() или sort(), а если количество мало, то более эффективны nargest() и nsmallest() из модуля heapq.