Атрыманне 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() змяняе парадак першапачатковага спісу.

Пераключыўшы парадак па ўзрастанні/змяншэнні з аргументам адваротным і выбраўшы любую колькасць кавалачкаў зверху, вы можаце атрымаць 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 больш эфектыўны.