Kupata vitu vya n vya orodha kwa mpangilio kutoka kwa maadili makubwa na madogo zaidi katika Python

Biashara

Ikiwa unataka kupata vipengee vya n vya orodha (safu) kwa mpangilio kutoka kwa thamani kubwa au ndogo zaidi katika Python, na n=1, unaweza kutumia kitendakazi kifuatacho kilichojumuishwa.

  • max()
  • min()

Ikiwa n>1, kuna njia mbili za kupanga orodha au kutumia moduli ya heapq ya maktaba ya kawaida.

  • Pata maadili ya juu na ya chini:max(),min()
  • Pata vipengele vya n kwa mpangilio wa thamani ya juu na ya chini:aina
  • Pata vipengele vya n kwa mpangilio wa thamani ya juu na ya chini:heapqModuli

Ikiwa idadi ya vipengee vya kurejeshwa ni kubwa, ni vyema zaidi kuvipanga kwanza kwa kutumia sorted() au sort(), na ikiwa nambari ni ndogo, nargest() na nsmallest() ya moduli ya heapq ni bora zaidi.

Ili kupata faharisi za viwango vya juu na vya chini zaidi, tumia max(), min() na index().

Pata maadili ya juu na ya chini:max(),min()

Ili kupata vipengele vya juu na vya chini zaidi vya orodha, tumia vitendakazi vilivyojengewa ndani max() na min().

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

print(max(l))
# 23

print(min(l))
# -10

Pata vipengele vya n kwa mpangilio wa thamani ya juu zaidi na ya chini zaidi: Panga

Ikiwa unataka kupata vipengele vya n vya orodha ili kutoka kwa thamani kubwa au ndogo zaidi, njia ya kwanza ni kupanga (kupanga) orodha.

Ili kupanga orodha, tumia chaguo za kukokotoa zilizojengewa ndani sorted() au sort() mbinu ya orodha. sorted() inarudisha orodha mpya iliyopangwa, huku sort() inapanga upya orodha asili.

Kwa kubadili mpangilio wa kupanda/kushuka kwa hoja kinyume na kuchagua idadi yoyote ya vipande kutoka juu, unaweza kupata vipengele vya n kwa mpangilio kutoka kwa thamani kubwa/ndogo ya orodha.

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]

Unaweza kuziandika zote kwa mstari mmoja.

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

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

Ikiwa haujali kubadilisha mpangilio wa orodha asili, unaweza kutumia sort() njia.

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]

Pata vipengele vya n kwa mpangilio wa thamani ya juu na ya chini:heapqModuli

Ikiwa unataka kupata vipengele vya n vya orodha kwa mpangilio kutoka kwa thamani kubwa au ndogo zaidi, unaweza kutumia moduli ya heapq.

Tumia kitendakazi kifuatacho katika moduli ya heapq. Katika kesi hii, orodha ya asili haitabadilishwa.

  • nlargest()
  • nsmallest()

Hoja ya kwanza ni idadi ya vipengee vinavyopaswa kurejeshwa, na hoja ya pili ni ile inayotekelezeka (orodha, n.k.) itakayolengwa.

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]

Kama nilivyoandika hapo mwanzo, ikiwa idadi ya vitu vinavyopaswa kurejeshwa ni kubwa, ni bora zaidi kuzipanga kwanza na sorted() au sort(), na ikiwa nambari ni ndogo, nargest() na nsmallest() of moduli ya heapq ni bora zaidi.