0Pricing
Competitive Programming Academy · Lezione

sorted() e la funzione key

Ordinare numeri, stringhe e tuple

sorted() e la funzione key è una lezione Competitive Programming Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Competitive Programming Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Competitive Programming Academy include 4 lezioni in totale.

L'ordinamento fa vincere le gare

Molti problemi di programmazione competitiva diventano semplici quando i dati sono ordinati. Il primo strumento da usare è sorted(), che restituisce una nuova lista ordinata. 🏆

sorted() restituisce una copia

Chiamare sorted(nums) lascia intatta la lista originale e restituisce una nuova lista ordinata. È utile quando deve riutilizzare l'input in seguito.

nums = [3, 1, 2]
print(sorted(nums))   # [1, 2, 3]
print(nums)           # [3, 1, 2]

list.sort() ordina sul posto

Quando non le serve conservare l'ordine originale, list.sort() ordina sul posto e restituisce None. In questo modo risparmia memoria con gli array grandi.

nums = [3, 1, 2]
nums.sort()
print(nums)   # [1, 2, 3]

L'ordine predefinito è crescente

Per impostazione predefinita, Python ordina dal più piccolo al più grande. I numeri vanno dal minore al maggiore e le stringhe seguono l'ordine alfabetico, carattere per carattere.

print(sorted(["pear", "apple", "kiwi"]))
# ['apple', 'kiwi', 'pear']

Inverti l'ordine con reverse

Passi reverse=True per ordinare dal più grande al più piccolo. È perfetto quando un passaggio greedy richiede prima gli elementi più grandi.

print(sorted([3, 1, 2], reverse=True))
# [3, 2, 1]

Scopra la funzione key

L'argomento key indica a sort come classificare ogni elemento. Python applica key a ogni elemento e ordina in base ai valori restituiti.

words = ["bb", "a", "ccc"]
print(sorted(words, key=len))
# ['a', 'bb', 'ccc']

key con una lambda

Una piccola lambda permette di ordinare in base a qualsiasi espressione direttamente nel codice. Qui ordiniamo i numeri in base alla loro distanza da zero.

vals = [-5, 2, -1, 3]
print(sorted(vals, key=lambda x: abs(x)))
# [-1, 2, 3, -5]

Ordini gli oggetti in base a un campo

Con tuple o record, imposti key sul campo che conta. Il resto dell'elemento viene mantenuto automaticamente.

people = [("Ann", 30), ("Bob", 25)]
print(sorted(people, key=lambda p: p[1]))
# [('Bob', 25), ('Ann', 30)]

L'ordinamento è stabile

L'ordinamento di Python è stabile: gli elementi con chiavi uguali mantengono il loro ordine relativo originale. Questo permette di concatenare più ordinamenti per risolvere i casi di parità in sicurezza.

key è meglio che confrontare a mano

Una key viene calcolata una sola volta per elemento, quindi resta efficiente anche con input grandi. La scelga invece di scambiare gli elementi manualmente.

L'ordinamento costa O(n log n)

Python ordina in tempo O(n log n). Per n fino a qualche centinaio di migliaia di elementi, rientra comodamente in un limite di un secondo.

Verifica rapida

Le serve una lista ordinata, ma deve conservare intatta quella originale.

Riepilogo

Ora può ordinare i dati con sorted() oppure sul posto, invertire l'ordine con reverse e classificare qualsiasi elemento usando una key. L'ordinamento stabile mantiene ordinate le parità. 🎉

Domande Frequenti

La lezione «sorted() e la funzione key» è gratuita?

Sì — il testo completo di «sorted() e la funzione key» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Competitive Programming Academy, passa a CoddyKit PRO. Il corso Competitive Programming Academy include 4 lezioni in totale.

Cosa imparerò in «sorted() e la funzione key»?

Ordinare numeri, stringhe e tuple Eserciti Competitive Programming Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Competitive Programming Academy?

Non è richiesta alcuna esperienza precedente. Competitive Programming Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «sorted() e la funzione key»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Competitive Programming Academy?

Sì. Ogni lezione Competitive Programming Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. sorted() e la funzione key
  2. Ordinare per più campi
  3. Ordine personalizzato con functools.cmp_to_key
  4. Perché ordinare prima sblocca le soluzioni
← Torna a Competitive Programming Academy