15.1 Creare una copia della tupla
Quindi, sappiamo già che le tuple (tuples)
sono sequenze di elementi immutabili.
A causa della loro immutabilità, creare una copia di una tupla potrebbe sembrare un compito insignificante,
perché a differenza delle liste, le tuple non cambiano dopo essere state create.
Tuttavia, in alcuni casi potrebbe essere necessario creare una copia di una tupla, specialmente quando è importante lavorare con una versione separata di essa senza modificare i dati originali. Ecco i metodi principali:
Assegnazione diretta
Il modo più semplice per creare una copia di una tupla è utilizzare l'assegnazione diretta. Questo creerà un nuovo oggetto tupla, ma poiché le tuple sono immutabili, entrambi gli oggetti faranno riferimento agli stessi dati.
original_tuple = (1, 2, 3, 4, 5)
copied_tuple = original_tuple
print(copied_tuple)
In questo caso, copied_tuple
referenzierà lo stesso oggetto di
original_tuple.
Utilizzo della funzione tuple()
Un altro modo per creare una copia di una tupla è utilizzare la funzione incorporata
tuple()
. Questa funzione crea una nuova tupla copiando gli elementi
della tupla originale.
original_tuple = (1, 2, 3, 4, 5)
copied_tuple = tuple(original_tuple)
print(copied_tuple)
Questo metodo è particolarmente utile quando vuoi assicurarti di creare un nuovo oggetto, anche se l'oggetto originale potrebbe essere un altro oggetto iterabile.
Conversione tramite lista
A volte potrebbe essere necessario creare una copia modificabile della tupla sotto forma di lista, per apportare modifiche, e poi riconvertirla in una tupla.
original_tuple = (1, 2, 3, 4, 5)
temp_list = list(original_tuple)
temp_list.append(6)
copied_tuple = tuple(temp_list)
print(copied_tuple)
In questo esempio, convertiamo prima la tupla in una lista, aggiungiamo un nuovo elemento, e poi riconvertiamo la lista in una tupla.
15.2 Unione delle tuple
A differenza delle liste, le tuple non possono essere modificate dopo la creazione, ma puoi creare nuove tuple unendo quelle esistenti. Combinare le tuple è un'operazione comune che può essere utile in vari scenari di programmazione.
Metodi principali per unire le tuple
Concatenazione
Il modo più semplice per unire due o più tuple è usare
l'operatore +
. Questo metodo crea una nuova tupla che è il risultato della concatenazione delle tuple originali.
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
combined_tuple = tuple1 + tuple2
print(combined_tuple)
In questo esempio, combined_tuple
conterrà gli elementi (1, 2, 3, 4, 5, 6).
Moltiplicazione per un numero intero
Puoi anche usare l'operatore *
per moltiplicare una tupla
per un numero intero. Questo ripete la tupla per un numero specificato di volte e crea una nuova tupla.
tuple1 = (1, 2, 3)
multiplied_tuple = tuple1 * 3
print(multiplied_tuple)
Qui, multiplied_tuple
conterrà gli elementi (1, 2, 3, 1, 2, 3, 1, 2, 3).
Funzione itertools.chain
Per unire un gran numero di tuple, puoi usare la funzione
chain
dal modulo itertools
. Questo è utile quando
il numero di tuple da unire non è noto in anticipo.
from itertools import chain
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
tuple3 = (7, 8, 9)
combined_tuple = tuple(chain(tuple1, tuple2, tuple3))
print(combined_tuple)
Il risultato sarà (1, 2, 3, 4, 5, 6, 7, 8, 9).
15.3 Tuple annidate
Le tuple che contengono al loro interno altre tuple vengono chiamate
tuple annidate (nested tuples)
. Le tuple annidate
offrono un modo conveniente per organizzare e strutturare i dati, specialmente
quando è necessario rappresentare dati multidimensionali o strutture complesse.
Puoi combinare le tuple creando strutture annidate. Questo è utile per organizzare i dati in strutture multidimensionali. Creare una tupla annidata in Python è semplice quanto creare una normale tupla. Basta includere una tupla in un'altra.
nested_tuple = ((1, 2, 3), (4, 5, 6), (7, 8, 9))
In questo esempio, nested_tuple
contiene tre tuple, ciascuna delle quali consiste
di tre elementi.
Esempio di creazione di una tupla annidata da ordinarie:
In questo esempio, nested_tuple
contiene tre tuple, ciascuna delle quali consiste
di tre elementi.
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
nested_tuple = (tuple1, tuple2)
print(nested_tuple)
Qui, nested_tuple
conterrà ((1, 2, 3), (4, 5, 6)).
Accesso agli elementi di una tupla annidata
L'accesso agli elementi di una tupla annidata avviene utilizzando l'indicizzazione multipla. Prima indichi l'indice per la tupla esterna, e quindi per quella interna.
nested_tuple = ((1, 2, 3), (4, 5, 6), (7, 8, 9))
# Accesso all'elemento 5 nella seconda tupla annidata
element = nested_tuple[1][1]
print(element) # Output: 5
Array multidimensionali
Le tuple annidate sono spesso usate per rappresentare array bidimensionali o multidimensionali. Ad esempio, una tabella di dati può essere rappresentata come una tupla di tuple, dove ogni riga della tabella è una tupla separata.
Strutturazione dei dati
Le tuple annidate sono comode per strutturare i dati, come le coordinate geografiche (latitudine e longitudine) per diverse località:
locations = (("New York", (40.7128, -74.0060)),
("Los Angeles", (34.0522, -118.2437)),
("Chicago", (41.8781, -87.6298)))
GO TO FULL VERSION