Python - Ordina Arrays

Ciao a tutti, aspiranti programmatori Python! Oggi entreremo nel meraviglioso mondo dell'ordinamento degli array in Python. Non preoccupatevi se siete nuovi alla programmazione: vi guiderò attraverso ogni passaggio con numerosi esempi ed spiegazioni. Alla fine di questo tutorial, ordinerai gli array come un professionista!

Python - Sort Arrays

Cos'è un Array in Python?

Prima di iniziare con l'ordinamento, parliamo brevemente di cosa sia un array in Python. In Python, tipicamente usiamo delle liste per rappresentare gli array. Una lista è una raccolta di elementi che possono essere di diversi tipi. Per esempio:

fruits = ["mela", "banana", "ciliegia", "data"]
numbers = [42, 8, 15, 16, 23]

Ordina Array Utilizzando un Algoritmo di Ordinamento

Iniziamo con un semplice algoritmo di ordinamento chiamato Bubble Sort. Non è il più efficiente, ma è facile da capire per i principianti.

Bubble Sort

Ecco una semplice implementazione di Bubble Sort:

def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr

# Esempio di utilizzo
numbers = [64, 34, 25, 12, 22, 11, 90]
sorted_numbers = bubble_sort(numbers)
print("Array ordinato:", sorted_numbers)

Spiegazione:

  1. Definiamo una funzione chiamata bubble_sort che prende un array (lista) come input.
  2. Otteniamo la lunghezza dell'array e la memorizziamo in n.
  3. Utilizziamo due cicli annidati per confrontare elementi adiacenti.
  4. Se un elemento è maggiore del successivo, li scambiamo.
  5. Ripetiamo questo processo fino a quando l'intero array è ordinato.

Quando esegui questo codice, vedrai:

Array ordinato: [11, 12, 22, 25, 34, 64, 90]

Curiosità: Bubble Sort si chiama così perché gli elementi più piccoli "sovrappongono" alla cima della lista ad ogni iterazione!

Ordina Array Utilizzando il Metodo sort() della Lista

Le liste di Python hanno un metodo integrato sort() che rende l'ordinamento molto più semplice. Vediamo come funziona:

# Ordinamento di numeri
numbers = [64, 34, 25, 12, 22, 11, 90]
numbers.sort()
print("Numeri ordinati:", numbers)

# Ordinamento di stringhe
fruits = ["banana", "ciliegia", "mela", "data"]
fruits.sort()
print("Frutti ordinati:", fruits)

Output:

Numeri ordinati: [11, 12, 22, 25, 34, 64, 90]
Frutti ordinati: ['mela', 'banana', 'ciliegia', 'data']

Il metodo sort() modifica la lista originale. È come mettere in ordine la tua stanza – tutto finisce in ordine, ma è sempre la tua stanza!

Ordinamento in Ordine inverso

Puoi anche ordinare in ordine decrescente aggiungendo il parametro reverse=True:

numbers = [64, 34, 25, 12, 22, 11, 90]
numbers.sort(reverse=True)
print("Numeri ordinati (decrescente):", numbers)

Output:

Numeri ordinati (decrescente): [90, 64, 34, 25, 22, 12, 11]

Ordina Array Utilizzando la Funzione sorted()

La funzione sorted() è un altro strumento potente in Python per l'ordinamento. A differenza di sort(), non modifica la lista originale ma restituisce una nuova lista ordinata.

# Ordinamento di numeri
numbers = [64, 34, 25, 12, 22, 11, 90]
sorted_numbers = sorted(numbers)
print("Numeri originali:", numbers)
print("Numeri ordinati:", sorted_numbers)

# Ordinamento di stringhe
fruits = ["banana", "ciliegia", "mela", "data"]
sorted_fruits = sorted(fruits)
print("Frutti originali:", fruits)
print("Frutti ordinati:", sorted_fruits)

Output:

Numeri originali: [64, 34, 25, 12, 22, 11, 90]
Numeri ordinati: [11, 12, 22, 25, 34, 64, 90]
Frutti originali: ['banana', 'ciliegia', 'mela', 'data']
Frutti ordinati: ['mela', 'banana', 'ciliegia', 'data']

Pensa a sorted() come fare una copia della tua lista e ordinare quella copia, lasciando l'originale intatto. È come fare una foto della tua stanza disordinata, quindi organizzare tutto in modo ordinato nella foto mentre la tua stanza reale rimane uguale!

Ordinamento con Chiavi Personalizzate

Una delle caratteristiche più interessanti di sorted() è la capacità di utilizzare chiavi di ordinamento personalizzate. Supponiamo di voler ordinare una lista di parole in base alla loro lunghezza:

words = ["python", "è", "fantastico", "e", "divertente"]
sorted_words = sorted(words, key=len)
print("Ordinato per lunghezza:", sorted_words)

Output:

Ordinato per lunghezza: ['è', 'e', 'divertente', 'python', 'fantastico']

Qui, abbiamo usato len come funzione chiave. Python applica questa funzione a ciascun elemento e ordina in base al risultato.

Confronto dei Metodi di Ordinamento

Riassumiamo i metodi di ordinamento che abbiamo appreso in una tabella comoda:

Metodo Modifica Originale Restituisce Nuova Lista Può Usare Chiave Personalizzata
Bubble Sort No No
list.sort() No
sorted() No

Conclusione

Congratulazioni! Hai appena imparato diversi modi per ordinare gli array in Python. Dall'implementazione del tuo algoritmo di ordinamento personale all'uso dei metodi integrati di Python, ora hai gli strumenti per mantenere i tuoi dati organizzati.

Ricorda, ordinare è come organizzare libri su uno scaffale – ci sono molti modi di farlo, e il miglior metodo dipende da ciò che stai cercando di ottenere. Practica con diversi tipi di dati e metodi di ordinamento per diventare un maestro dell'ordinamento in Python!

Buon coding, e che i tuoi array siano sempre perfettamente ordinati! ??

Credits: Image by storyset