Отримання 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 елементів списку в порядку від найбільшого чи найменшого значення, першим методом є сортування (сортування) списку.

Щоб відсортувати список, скористайтеся вбудованою функцією sorted() або методом sort() списку. sorted() повертає новий відсортований список, тоді як sort() змінює порядок початкового списку.

Перемикаючи порядок зростання/спадіння за допомогою аргументу 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 є більш ефективним.