Ottenere gli n elementi di una lista in ordine dai valori più grandi e più piccoli in Python

Attività commerciale

Se volete ottenere gli n elementi di una lista (array) in ordine dal valore più grande o più piccolo in Python, e n=1, potete usare la seguente funzione built-in.

  • max()
  • min()

Se n>1, ci sono due modi per ordinare la lista o usare il modulo heapq della libreria standard.

  • Ottenere i valori massimi e minimi: max(),min()
  • Ottenere n elementi in ordine di valore massimo e minimo:ordina
  • Ottenere n elementi in ordine di valore massimo e minimo:heapqModulo

Se il numero di elementi da recuperare è grande, è più efficiente ordinarli prima usando sorted() o sort(), e se il numero è piccolo, nargest() e nsmallest() del modulo heapq sono più efficienti.

Per ottenere gli indici dei valori massimi e minimi, usate max(), min() e index().

Ottenere i valori massimi e minimi: max(), min()

Per ottenere gli elementi massimo e minimo della lista, usate le funzioni integrate max() e min().

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

print(max(l))
# 23

print(min(l))
# -10

Ottiene n elementi in ordine di valore massimo e minimo: Ordina

Se volete ottenere gli n elementi di una lista in ordine dal valore più grande o più piccolo, il primo metodo è quello di ordinare (sort) la lista.

Per ordinare la lista, usate la funzione integrata sort() o il metodo sort() della lista. sorted() restituisce una nuova lista ordinata, mentre sort() riordina la lista originale.

Cambiando l'ordine ascendente-discendente con l'argomento reverse e selezionando un numero qualsiasi di fette dall'alto, potete ottenere n elementi in ordine dal valore più grande\minore della lista.

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]

Potete scriverli tutti in una riga.

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

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

Se non vi dispiace cambiare l'ordine della lista originale, potete usare il metodo 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]

Ottenere n elementi in ordine di valore massimo e minimo: heapqModulo

Se volete ottenere gli n elementi di una lista in ordine dal valore più grande o più piccolo, potete usare il modulo heapq.

Usate la seguente funzione nel modulo heapq. In questo caso, la lista originale non verrà modificata.

  • nlargest()
  • nsmallest()

Il primo argomento è il numero di elementi da recuperare, e il secondo argomento è l'iterabile (lista, ecc.) da prendere di mira.

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]

Come ho scritto all'inizio, se il numero di elementi da recuperare è grande, è più efficiente ordinarli prima con sorted() o sort(), e se il numero è piccolo, nargest() e nsmallest() del modulo heapq sono più efficienti.

Copied title and URL