CodeGym /Corsi /Python SELF IT /Ordinamento di liste

Ordinamento di liste

Python SELF IT
Livello 7 , Lezione 8
Disponibile

8.1 Ordinamento della lista

L'ordinamento di una lista in Python è un'operazione importante che permette di organizzare i dati per facilitarne l'analisi o la presentazione. Python offre diversi modi per ordinare le liste, ognuno dei quali può essere utile a seconda del compito e dei risultati richiesti.

Metodo sort()

Il metodo sort() ordina la lista in loco, cioè modifica la lista originale. È molto efficiente e permette di regolare l'ordinamento tramite argomenti.


numbers = [5, 2, 9, 1]
numbers.sort()
print(numbers)  # Mostrerà [1, 2, 5, 9] 

Puoi ordinare la lista in ordine inverso impostando il parametro reverse=True.


numbers = [5, 2, 9, 1]
numbers.sort(reverse=True)
print(numbers)  # Mostrerà [9, 5, 2, 1]

Funzione sorted()

La funzione sorted() crea una nuova lista, che è una versione ordinata dell'originale. La lista originale non viene modificata, il che spesso rende sorted() la scelta preferita quando è necessario conservare i dati originali intatti.


numbers = [5, 2, 9, 1]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # Mostrerà [1, 2, 5, 9]
print(numbers)  # La lista originale non è cambiata [5, 2, 9, 1]

È importante ricordare che sort() modifica la lista originale, mentre sorted() restituisce una nuova lista ordinata, lasciando l'originale inalterato. Usa sort() se hai bisogno di modificare i dati sul posto, e sorted() se vuoi mantenere l'ordine originale dei dati.

8.2 Ordinamento per chiave

A volte sono necessari scenari di ordinamento complessi, o l'ordinamento con l'ignoranza di alcuni parametri. In questo caso ci viene in aiuto l'«ordinamento per chiave». Per utilizzarlo bisogna passare nel metodo sort() o nella funzione sorted() un parametro speciale — key.

Come valore del parametro key bisogna passare una funzione che verrà utilizzata nel confronto degli elementi.

Confronto delle stringhe senza considerare il caso

Prima del confronto tutte le stringhe vengono convertite in minuscolo


alist = ["banana", "Orange", "Kiwi", "cherry"]
alist.sort(key=str.lower)
print(alist)  # Mostrerà ['banana', 'cherry', 'Kiwi', 'Orange']

Esempio di ordinamento di una lista di tuple

Supponiamo di avere una lista di studenti, dove ogni elemento è una tupla (tuple) contenente il nome dello studente e il suo voto. Vuoi ordinare gli studenti per i loro voti:


students = [('Alice', 88), ('Bob', 75), ('Carol', 96)]

def get_grade(student):
    return student[1]
            
students.sort(key=get_grade)
print(students)  # Mostrerà [('Bob', 75), ('Alice', 88), ('Carol', 96)]

Esempio di ordinamento di una lista di dizionari

Oppure hai una lista di dizionari, dove ogni dizionario contiene informazioni sugli studenti. Per ordinarli per voto, devi scrivere un codice di questo tipo:


students = [
    {'name': 'Alice', 'grade': 88},
    {'name': 'Bob', 'grade': 75},
    {'name': 'Carol', 'grade': 96}
]
        
def get_grade(student):
    return student['grade']
        
sorted_students = sorted(students, key=get_grade)
print(sorted_students)  # Mostrerà [{'name': 'Bob', 'grade': 75}, {'name': 'Alice', 'grade': 88}, {'name': 'Carol', 'grade': 96}]
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION