Python sort

In questa lezione parleremo del metodo sort() di Python utile per ordinare velocemente una lista in ordine crescente o decrescente.

Realizziamo dunque alcuni esempi per capirne il funzionamento.

Ordinamento crescente/decrescente di una lista con Python sort

Prendiamo in input una lista di numeri qualsiasi ed applichiamo il metodo sort su di essa per effettuare l’ordinamento in senso crescente.


numbers = [1,7,9,3,4]
numbers.sort()
print(numbers)

Parametro reverse di Python sort

Ordiniamo adesso in ordine descrescente utilizzando il parametro opzionale reverse. Se reverse è False si ordina la lista in senso crescente, è infatti il valore di default, se invece reverse è True, si ordina la lista in senso descrescente.

Ecco in esempio:


numbers = [1,7,9,3,4]
numbers.sort(reverse=True)
print(numbers)

Parametro key di sort

Il parametro key consente di specificare un criterio di ordinamento in base ad una funzione.

Facciamo un esempio ordinando una lista in base alla lunghezza dei nomi. Definiamo una funzione che calcola la lunghezza dei nomi di un array.

Applichiamo l’ordinamento impostando la key con la funzione definita.

Ecco di seguito il semplice esempio dell’algoritmo di ordinamento Python sort():


names = ['Paul','Robert','Elena','Tom']

def len_names(array):
   return len(array)

names.sort(key=len_names)

print(names)

Se volessimo ordinare in ordine inverso, basterà indicare anche il parametro reverse.


names = ['Paul','Robert','Elena','Tom']

def len_names(array):
   return len(array)

names.sort(reverse = True, key=len_names)

print(names)

Esempio di ordinamento con Python sort

In questo esempio proviamo ad ordinare una lista di lettere maiuscole e minuscole.



names = ['B','a','C','s']
names.sort()

print(names)

In output avremo: [‘B’, ‘C’, ‘a’, ‘s’]

Il risultato ottenuto non è quello che ci aspettavamo! Perchè? Ovviamente perché ogni lettera dell’alfabeto corrsiponde ad un carattere della codifica ASCII e le lettere maiuscole hanno una codifica diversa rispetto alle minuscole.

Possiamo ottenere un ordinamento corretto ad esempio convertendo tutti i caratteri della lista in minuscolo.


names = ['B','a','C','s']
names_order = [name.lower() for name in names]
names_order.sort()

print(names_order)

Potremmo anche scrivere in questo modo:


names = ['B','a','C','s']

for i in range(len(names)):
    names[i] = names[i].lower()

names.sort()

print(names)

Conclusione

In questa lezione abbiamo visto come ordinare velocemente una lista utilizzando Python sort, nelle prossime lezioni studieremo alcuni algoritmi di ordinamento a scopo didattico.

Some useful links

Python tutorial

Python Compiler

Install Python

Variables

Assignment operators

Strings

Casting

How to find the maximum of N numbers

Python

Bubble sort

Matplotlib Plot

Continua la lettura su: https://www.codingcreativo.it/python-sort/ Autore del post: Coding Creativo Fonte: https://www.codingcreativo.it

Articoli Correlati

Ordinare un dizionario in Python

Si può ordinare un dizionario in Python per chiave o per valore. Facciamo alcuni esempi pratici di ordinamento in Python in base alle nostre esigenze.

Tutti gli esempi proposti possono essere provati nel compiler online che troverete al seguente link: Python compiler online.

Primo esempio – Ordinare un dizionario in Python per chiave

In questo primo esempio dapprima creiamo un dizionario in Python. Abbiamo poi detto di ordinare per chiave, quindi dobbiamo decidere se seguire un ordine crescente o decrescente, infine dobbiamo richiamare la funzione sul dizionario.

Implementiamo, dunque, una prima soluzione. Per ordinare in senso crescente possiamo utilizzare la funzione sorted sul nostro dizionario, in questo modo:

student = {
“name”: ‘Cristina’,
“age”: ’29’,
“hobby”: ‘swim’,
“mail”: ‘codingcreatico@gmail.com’,
“passion”: ‘coding’
}

for key in sorted(student):
print(key, student[key])

E se vogliamo un ordinamento decrescente? Basterà semplicemente utilizzare il parametro reverse della funzione sorted, impostandolo a False.

Ecco un esempio di dizionario ordinato in senso decrescente in Python:

student = {
“name”: ‘Cristina’,
“age”: ’29’,
“hobby”: ‘swim’,
“mail”: ‘codingcreatico@gmail.com’,
“passion”: ‘coding’
}

for key in sorted(student, reverse = True):
print(key, student[key])

Secondo esempio – Ordinare un dizionario in Python per chiave

Cerchiamo adesso una seconda soluzione al problema proposto.

Innanzitutto potremmo ad esempio pensare di utilizzare il metodo keys() sul dizionario, ma cosa succede?

Proviamolo, dunque, con un esempio:

student = {
“name”: ‘Cristina’,
“age”: ’29’,
“hobby”: ‘swim’,
“mail”: ‘codingcreatico@gmail.com’,
“passion”: ‘coding’
}

sorted_key = sorted(student.keys())

for element in sorted_key:
print(element)

In questo caso si avrà il seguente output:

age
hobby
mail
name
passion

Ovvero avremo le sole chiavi ordinate in senso crescente.

Quindi, anche se uso il metodo dict() non riuscirò in questo modo ad ordinare un dizionario in Python.

E se invece proviamo ad utilizzare il metodo values()?

student = {
“name”: ‘Cristina’,
“age”: ’29’,
“hobby”: ‘swim’,
“mail”: ‘codingcreatico@gmail.com’,
“passion”: ‘coding’
}

sorted_values = sorted(student.values())

for element in sorted_values:
print(element)

Il risultato sarà il seguente:

29
Cristina
coding
codingcreatico@gmail.com
swim

Quindi se voglio ordinare un dizionario in Python per chiave cosa devo fare? Quale altra soluzione posso pensare?

Possiamo, ad esempio, utilizzare il metodo items(), che abbiamo studiato in questa lezione: items Python.

Ricordiamo inoltre che questo metodo è utilizzato per restituire l’elenco con tutte le chiavi del dizionario con i suoi rispettivi valori.

Dopo, possiamo nuovamente riconvertire le coppie di tuple in un dizionario utilizzando il metodo dict().

Ecco una possibile soluzione al nostro algoritmo:

student = {
“name”: ‘Cristina’,
“age”: ’29’,
“hobby”: ‘swim’,
“mail”: ‘codingcreatico@gmail.com’,
“passion”: ‘coding’
}

sorted_student = sorted(student.items())
sorted_student_dict = dict(sorted(student.items()))

print(sorted_student_dict)

for element in sorted_student_dict:
print(element, ‘: ‘, sorted_student_dict[element])

Così abbiamo ottenuto tutte le coppie di tuple chiave, valori ordinate in senso crescente. Poi, convertiamolo in dizionario con il metodo dict(). Così riusciamo ad ordinare il dizionario in Python per chiave.

Utilizziamo una funzione per poterla poi utilizzare per creare l’ordinamento su più dizionari:

student = {
“name”: ‘Cristina’,
“age”: ’29’,
“hobby”: ‘swim’,
“mail”: ‘codingcreatico@gmail.com’,
“passion”: ‘coding’
}

def sort_dict(d):
return dict(sorted(student.items()))

print(sort_dict(student))

Ordinare un dizionario in Python per chiave in senso decrescente

Questa volta utilizziamo il parametro reverse di sorted per creare un ordinamento decrescente sui dizionari. Infatti impostandolo a True l’ordinamento sarà decrescente. Di default il suo valore è False.

student = {
“name”: ‘Cristina’,
“age”: ’29’,
“hobby”: ‘swim’,
“mail”: ‘codingcreatico@gmail.com’,
“passion”: ‘coding’
}

def sort_dict(d):
return dict(sorted(student.items(), reverse = True))

print(sort_dict(student))

Per completezza potremmo passare questo parametro anche alla funzione, in questo modo:

student = {
“name”: ‘Cristina’,
“age”: ’29’,
“hobby”: ‘swim’,
“mail”: ‘codingcreatico@gmail.com’,
“passion”: ‘coding’
}

def sort_dict(d, rev):
return dict(sorted(student.items(), reverse = rev))

print(sort_dict(student, True))

Conclusione

In questa lezione abbiamo affrontato alcuni interessanti esempi su come ordinare un dizionario in Python per chiave, in ordine crescente e decrescente.

Alcuni link utili

Indice tutorial sul linguaggio Python

1 – Introduzione al linguaggio Python

2 – Le variabili

3 – Operatori aritmetici e di assegnazione

4 – Stringhe

5 – Casting

6 – Input e print

7 – Primi esercizi in Python

8 – Errori in Python

9 – Script Python

10 – Scambio di variabili

11 – Modulo math

For list Python

In questa lezione farò alcuni esempi di utilizzo del ciclo for con l’elemento list in Python.

For list Python – Stampare una lista in ordine inverso utilizzando il ciclo for

Questo problema può avere diverse soluzioni, ne analizzeremo alcune.

La prima soluzione fa uso della funzione reversed(), per invertire una lista, la seconda che fa uso della lunghezza della lista, la funzione len().

Cominciamo analizzando in dettaglio la prima soluzione.

Innanzitutto creiamo una lista di elementi: numbers = [1, 2, 3, 4, 5], dopo utilizziamo la funzione esistente reversed() per invertire gli elementi di una lista. Dunque stampiamo gli elementi invertiti utilizzando il ciclo for in Python sulla lista.

Di seguito ecco una possibile soluzione:

numbers = [1, 2, 3, 4, 5]
numbers_reversed = reversed(numbers)
for number in numbers_reversed:
print(number)

Realizziamo adesso una seconda soluzione, calcolando la lunghezza della lista a cui sottrarremo uno. In questo modo troviamo l’indice dell’ultimo elemento della lista. Poi utilizzeremo il ciclo for opportuno.

Ecco il codice completo della seconda soluzione al nostro algoritmo che utilizza il for sulle liste in Python:

numbers = [1, 2, 3, 4, 5]
n_numbers = len(numbers) – 1
for i in range (n_numbers, -1, -1):
print(numbers[i])

For list Python – Calcolare il cubo di tutti gli elementi di una lista

Creiamo una lista di numeri interi. Con il ciclo for calcoliamo il cubo di ciascun elemento e stampiamo la lista. Utilizziamo la funzione len per determinare la lunghezza della lista. Infine cicliamo la lista modificata per stampare gli elementi.

numbers = [1, 2, 3, 4, 5]

for i in range(len(numbers)):
numbers[i] = numbers[i] * numbers[i] * numbers[i]

for number in numbers:
print(number)

Una seconda soluzione prevede semplicemente l’uso della funzione in Python per calcolare le potenze di un numero, la funzione pow().

Nel nostro caso ci servirà elevare al cubo. Poi cicliamo sulla lista con il ciclo for in Python.

Ecco il codice di esempio completo:

numbers = [1, 2, 3, 4, 5]

for i in range(len(numbers)):
numbers[i] = pow(numbers[i],3)

for number in numbers:
print(number)

Questi sono solo alcuni semplici esempi di utilizzo del ciclo for con sulle liste in Python, nelle prossime lezioni sviluppermo tanti altri esempi.

Alcuni link utili

Indice tutorial sul linguaggio Python

1 – Introduzione al linguaggio Python

2 – Le variabili

3 – Operatori aritmetici e di assegnazione

4 – Stringhe

5 – Casting

6 – Input e print

7 – Primi esercizi in Python

8 – Errori in Python

9 – Script Python

10 – Scambio di variabili

11 – Modulo math

Vuoi rimanere aggiornato sulle nuove tecnologie per la Didattica e ricevere suggerimenti per attività da fare in classe?

Sei un docente?

soloscuola.it la prima piattaforma
No Profit gestita dai

Volontari Per la Didattica
per il mondo della Scuola. 

 

Tutti i servizi sono gratuiti. 

Associazione di Volontariato Koinokalo Aps

Ente del Terzo Settore iscritta dal 2014
Tutte le attività sono finanziate con il 5X1000