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:
heapq
Modulo
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.
- Articoli correlati:Ordinare una lista in Python: la differenza tra ordinato e ordinato
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.