Obținerea celor n elemente ale unei liste în ordine de la cea mai mare și cea mai mică valoare în Python

Afaceri

Dacă doriți să obțineți cele n elemente ale unei liste (array) în ordine de la cea mai mare sau cea mai mică valoare în Python, iar n=1, puteți utiliza următoarea funcție încorporată.

  • max()
  • min()

Dacă n>1, există două moduri de a sorta lista sau de a utiliza modulul heapq din biblioteca standard.

  • Obțineți valorile maxime și minime: max(),min()
  • Obține n elemente în ordinea valorii maxime și minime:sortare
  • Obține n elemente în ordinea valorii maxime și minime:heapqModul

În cazul în care numărul de elemente care trebuie recuperate este mare, este mai eficient să le sortați mai întâi folosind sorted() sau sort(), iar dacă numărul este mic, nargest() și nsmallest() din modulul heapq sunt mai eficiente.

Pentru a obține indicii valorilor maxime și minime, utilizați max(), min() și index().

Obțineți valorile maxime și minime: max(), min()

Pentru a obține elementele maxime și minime ale listei, utilizați funcțiile integrate max() și min().

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

print(max(l))
# 23

print(min(l))
# -10

Obține n elemente în ordinea valorii maxime și minime: Sortare

Dacă doriți să obțineți cele n elemente ale unei liste în ordine de la cea mai mare sau cea mai mică valoare, prima metodă este sortarea (sortarea) listei.

Pentru a sorta lista, utilizați funcția încorporată sorted() sau metoda sort() a listei. sorted() returnează o nouă listă sortată, în timp ce sort() reordonează lista originală.

Schimbând ordinea ascendentă\descendentă cu argumentul reverse și selectând orice număr de felii din partea de sus, puteți obține n elemente în ordine de la cea mai mare\minor valoare a listei.

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]

Le puteți scrie pe toate într-un singur rând.

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

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

Dacă nu vă deranjează să schimbați ordinea din lista originală, puteți utiliza metoda 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]

Obține n elemente în ordinea valorii maxime și minime: heapqModul

Dacă doriți să obțineți cele n elemente ale unei liste în ordine de la cea mai mare sau cea mai mică valoare, puteți utiliza modulul heapq.

Utilizați următoarea funcție în modulul heapq. În acest caz, lista inițială nu va fi modificată.

  • nlargest()
  • nsmallest()

Primul argument este numărul de elemente care trebuie recuperate, iar al doilea argument este iterabilul (listă etc.) care trebuie să fie vizat.

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]

Așa cum am scris la început, dacă numărul de elemente care trebuie recuperate este mare, este mai eficient să le sortăm mai întâi cu sorted() sau sort(), iar dacă numărul este mic, nargest() și nsmallest() din modulul heapq sunt mai eficiente.

Copied title and URL