Elenco Python e tuple (con esempi)

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 1a 4. L'elenco è racchiuso tra parentesi (). Inoltre, abbiamo definito una variabile tup_num; che contiene una tupla di numeri da 1a 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 5a list_num in index 2e abbiamo trovato 5in index 2in output. Inoltre, abbiamo assegnato 5a tup_num in index 2e 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

  1. 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.
  2. 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.
  3. 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:

  1. La sintassi letterale delle tuple è mostrata tra parentesi ()mentre la sintassi letterale delle liste è mostrata tra parentesi quadre ().
  2. Le liste hanno lunghezza variabile, la tupla ha lunghezza fissa.
  3. La lista ha natura mutevole, la tupla ha natura immutabile.
  4. List ha più funzionalità della tupla.

Articoli interessanti...