Bi rêzgirtina n hêmanên navnîşek ji nirxên herî mezin û piçûk ên Python

Dikan

Ger hûn dixwazin n hêmanên lîsteyek (array) ji nirxa herî mezin an piçûktir a Python-ê û n=1 bi rêz bigirin, hûn dikarin fonksiyona çêkirî ya jêrîn bikar bînin.

  • max()
  • min()

Ger n>1, du rê hene ku hûn navnîşê birêkûpêk bikin an modula heapq ya pirtûkxaneya standard bikar bînin.

  • Nirxên herî zêde û kêmtirîn bistînin:max(),min()
  • N hêmanan li gorî nirxa herî zêde û hindiktirîn bistînin:jiberhevxistin
  • N hêmanan li gorî nirxa herî zêde û hindiktirîn bistînin:heapqModule

Ger hejmara hêmanên ku werin vegerandin mezin be, bikêrhatîtir e ku meriv wan pêşî bi karanîna sorted() an sort() veqetîne, û heke hejmar hindik be, nargest() û nsmallest() modula heapq bikêrtir e.

Ji bo bidestxistina îndeksên nirxên herî zêde û herî kêm, max(), min() û index() bikar bînin.

Nirxên herî zêde û kêmtirîn bistînin:max(),min()

Ji bo bidestxistina hêmanên herî zêde û hindik ên navnîşê, fonksiyonên çêkirî yên max() û min() bikar bînin.

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

print(max(l))
# 23

print(min(l))
# -10

N hêmanan li gorî nirxa herî zêde û hindiktirîn bistînin: Rêzkirin

Heke hûn dixwazin n hêmanên lîsteyê li gorî nirxa herî mezin an piçûktir bigirin, rêbaza yekem ew e ku hûn navnîşê birêkûpêk bikin.

Ji bo rêzkirina navnîşê, fonksiyona çêkirî ya sorted() an jî rêbaza sort() ya navnîşê bikar bînin. sorted() lîsteyek rêzkirî ya nû vedigerîne, dema ku sort() lîsteya orîjînal ji nû ve rêz dike.

Bi guheztina rêza hilkişîn/xwarê ya bi argumana berepaş û bijartina her hejmarek perçeyan ji jor, hûn dikarin n hêmanan li rêzê ji nirxa herî mezin/biçûk a navnîşê bigirin.

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]

Hûn dikarin hemî di yek rêzê de binivîsin.

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

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

Heke hûn ne xema guhartina rêzika navnîşa orîjînal in, hûn dikarin rêbaza sort() bikar bînin.

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 hêmanan li gorî nirxa herî zêde û hindiktirîn bistînin:heapqModule

Ger hûn dixwazin n hêmanên navnîşek ji nirxa herî mezin an piçûktir bi rêz bigirin, hûn dikarin modula heapq bikar bînin.

Di modula heapq de fonksiyona jêrîn bikar bînin. Di vê rewşê de, lîsteya orîjînal nayê guhertin.

  • nlargest()
  • nsmallest()

Argumenta yekem hejmara hêmanên ku bêne vegerandin e, û argûmana duyemîn jî îterable (lîste, hwd.) ye ku tê armanc kirin.

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]

Wekî ku min di serî de nivîsand, heke hejmara hêmanên ku werin vegerandin mezin be, bikêrhatîtir e ku meriv wan pêşî bi sorted() an jî sort() veqetîne, û heke jimar piçûk be, herî () û herî hindik() modula heapq bikêrtir in.