Skip to content

Ottenere gli n elementi più grandi o più piccoli di un elenco in Python

Python

In Python, puoi ottenere gli elementi massimo e minimo da un elenco con le funzioni integrate max() e min(). Inoltre, se vuoi ottenere gli n-elementi più grandi/piccoli, puoi ordinare l’elenco o utilizzare il modulo heapq della libreria standard.

  • Ottieni gli elementi massimo e minimo:max(), min()
  • Ottieni gli n-elementi più grandi/piccoli:sorted(), sort()
  • Ottieni gli n-elementi più grandi/piccoli: il modulo heapq

Se il numero di elementi da ottenere è grande, è più efficiente ordinare prima con sorted() o sort(), mentre nlargest() o nsmallest() nel modulo heapq è più efficiente se il numero è piccolo.

Ottieni gli elementi massimo e minimo:max(), min()

Utilizzare le funzioni integrate max() e min() per ottenere gli elementi massimo e minimo dall’elenco.

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

print(max(l))
# 23

print(min(l))
# -10

Ottieni gli n-elementi più grandi/piccoli:sorted(), sort()

È possibile ottenere gli elementi più grandi/piccoli ordinando l’elenco.

Usa la funzione built-in sorted() o il metodo sort() di un elenco. sorted() restituisce un nuovo elenco ordinato e sort() ordina l’elenco originale stesso.

Invertendo l’ordine crescente/decrescente con il parametro reverse e selezionando un numero qualsiasi di elementi mediante affettatura, è possibile ottenere gli n elementi più grandi/piccoli.

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]

Puoi scrivere su una riga.

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

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

Puoi usare il metodo sort() se non importa se l’ordine dell’elenco originale cambia.

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]

Ottieni gli n-elementi più grandi/piccoli: il modulo heapq

Puoi anche usare il modulo heapq per ottenere gli n-elementi più grandi/piccoli da un elenco.

Utilizzare le funzioni nlargest() e nsmallest() del modulo heapq. In questo caso, l’elenco originale non viene modificato.

Il primo argomento è il numero di elementi da restituire e il secondo è l’iterabile di destinazione (ad esempio, list).

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]

Se il numero di elementi da ottenere è grande, è più efficiente ordinare prima con sorted() o sort(), mentre nlargest() o nsmallest() nel modulo heapq è più efficiente se il numero è piccolo.