In questo articolo impareremo le differenze chiave tra List e Tuple e come utilizzare queste due strutture di dati.
Gli elenchi e le tuple memorizzano uno o più oggetti o valori in un ordine specifico. Gli oggetti memorizzati in un elenco o in una tupla possono essere di qualsiasi tipo, incluso il tipo Nothing definito dalla parola chiave None.
Le liste e le tuple sono simili nella maggior parte dei contesti, ma ci sono alcune differenze che troveremo in questo articolo.
Differenze di sintassi
La sintassi di lista e tupla è leggermente diversa. Gli elenchi sono racchiusi tra parentesi quadre ()
e le tuple sono racchiuse tra parentesi ()
.
Esempio 1.1: creazione di un elenco e creazione di tupla
list_num = (1,2,3,4) tup_num = (1,2,3,4) print(list_num) print(tup_num)
Produzione:
(1,2,3,4) (1,2,3,4)
Sopra, abbiamo definito una variabile chiamata list_num che contiene un elenco di numeri da 1
a 4
. L'elenco è racchiuso tra parentesi ()
. Inoltre, abbiamo definito una variabile tup_num; che contiene una tupla di numeri da 1
a 4
. La tupla è racchiusa tra parentesi ()
.
In Python abbiamo una type()
funzione che fornisce il tipo di oggetto creato.
Esempio 1.2: trova il tipo di struttura dati usando la funzione type ()
type(list_num) type(tup_num)
Produzione:
lista tupla
Elenco mutevole e tuple immutabili
La lista ha natura mutabile, cioè la lista può essere cambiata o modificata dopo la sua creazione in base alle esigenze mentre la tupla ha natura immutabile, cioè la tupla non può essere cambiata o modificata dopo la sua creazione.
Esempio 2.1: modificare un elenco di elementi rispetto a una tupla
list_num(2) = 5 print(list_num) tup_num(2) = 5
Produzione:
(1,2,5,4) Traceback (la chiamata più recente per ultima): File "python", riga 6, in TypeError: l'oggetto 'tuple' non supporta l'assegnazione di elementi
Nel codice sopra abbiamo assegnato 5
a list_num in index 2
e abbiamo trovato 5
in index 2
in output. Inoltre, abbiamo assegnato 5
a tup_num in index 2
e abbiamo ottenuto type error
. Non possiamo modificare la tupla a causa della sua natura immutabile.
Nota: poiché la tupla è immutabile, le dimensioni sono fisse e l'elenco ha dimensioni variabili.
Operazioni disponibili
Liste ha più funzioni incorporate di quella di tuple. Possiamo usare la dir((object))
funzione incorporata per ottenere tutte le funzioni associate per lista e tupla.
Esempio 3.1: Elenco directory
dir(list_num)
Produzione:
('__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__get__', '__get_ __gt__ ',' __hash__ ',' __iadd__ ',' __imul__ ',' __init__ ',' __init_subclass__ ',' __iter__ ',' __le__ ',' __len__ ',' __lt__ ',' __mul__ ',' __new__ ',' __new__ ',' __new__ ',' __new__ ' , '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear copia "," conta "," estendi "," indice ","inserisci ',' pop ',' remove ',' reverse ',' sort ')
Esempio 3.2: Tuple Directory
dir(tup_num)
Produzione:
('__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__get__s__', '__get__', '__get __gt__ ',' __hash__ ',' __init__ ',' __init_subclass__ ',' __iter__ ',' __le__ ',' __len__ ',' __lt__ ',' __mul__ ',' __ne__ ',' __new__ ',' __reduce__ ',' __reduce__ ',' __reduce__ ' , '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index')
Possiamo vedere chiaramente che ci sono così tante funzionalità aggiuntive associate a un elenco su una tupla.Possiamo eseguire operazioni di inserimento e pop, rimozione e ordinamento di elementi nell'elenco con funzioni integrate che non sono disponibili in Tuple.
Confronto delle dimensioni
Il funzionamento delle tuple ha dimensioni inferiori a quelle di list, il che lo rende un po 'più veloce ma non tanto da menzionare finché non si dispone di un numero enorme di elementi.
Esempio 5.1: Calcola la dimensione di List rispetto a Tuple
a= (1,2,3,4,5,6,7,8,9,0) b= (1,2,3,4,5,6,7,8,9,0) print('a=',a.__sizeof__()) print('b=',b.__sizeof__())
Produzione:
a = 104 b = 120
Nel codice precedente abbiamo la tupla a e la lista b con gli stessi elementi ma la dimensione della tupla è inferiore alla lista.
Diversi casi d'uso
A prima vista, potrebbe sembrare che gli elenchi possano sempre sostituire le tuple. Ma le tuple sono strutture dati estremamente utili
- L'uso di una tupla invece di una lista può dare al programmatore e all'interprete un suggerimento che i dati non dovrebbero essere modificati.
- Le tuple sono comunemente usate come l'equivalente di un dizionario senza chiavi per memorizzare i dati. Per esempio,
(('Swordfish', 'Dominic Sena', 2001), ('Snowden', 'Oliver Stone', 2016), ('Taxi Driver', 'Martin Scorsese', 1976))
L'esempio sopra contiene tuple all'interno dell'elenco che ha un elenco di film. - La lettura dei dati è più semplice quando le tuple vengono memorizzate all'interno di un elenco. Per esempio,
((2,4), (5,7), (3,8), (5,9))
è più facile da leggere di((2,4), (5,7), (3,8), (5,9))
La tupla può anche essere utilizzata come chiave nel dizionario a causa della loro natura hashable e immutabile, mentre le liste non vengono utilizzate come chiave in un dizionario perché l'elenco non può gestire __hash__()
e ha natura mutabile.
key_val= (('alpha','bravo'):123) #Valid key_val = (('alpha','bravo'):123) #Invalid
Punti chiave da ricordare:
- La sintassi letterale delle tuple è mostrata tra parentesi
()
mentre la sintassi letterale delle liste è mostrata tra parentesi quadre()
. - Le liste hanno lunghezza variabile, la tupla ha lunghezza fissa.
- La lista ha natura mutevole, la tupla ha natura immutabile.
- List ha più funzionalità della tupla.