Якщо ви хочете отримати 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 є більш ефективним.