Получаване на 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.

Copied title and URL