Tupla

Una tupla è un elenco immutabile. Una tupla non può essere modificata in alcun modo una volta che è stata creata.

Perché sono necessarie le tuple?
  • Nel caso di protezione di dati da modifiche (intenzionali o accidentali).
  • Le tuple occupano meno spazio in memoria e sono più veloci delle liste.
  • Per restituire più valori da una funzione.
  • Le tuple possono essere utilizzate come chiavi del dizionario (ne parleremo più avanti).



Creazione di tuple

1 modo: come un elenco, ma con parentesi
1
2
3
un = (1,2,3,4,5) print(tipo(a))   # classe 'tupla' stampa(a)         # (1, 2, 3, 4, 5)

2 vie: utilizzando la funzione tuple()
1
2
3
b = tupla((1,2,3,4,5)) print(tipo(b))   # <classe 'tupla'> stampa(b)         # (1, 2, 3, 4, 5)


Devi ricordare!
  1. Le tuple sono una lista immutabile.
  2. Gli elementi di una tupla possono essere di diversi tipi.
  3. Puoi creare una tupla usando la funzione tuple() o elencando gli elementi tra parentesi.

Caratteristiche di tupla

1) Puoi assegnare valori a una tupla senza usare le parentesi/
Ad esempio, puoi creare una tupla come questa:
1
2
3
a = 1,2,3,4,5     print(a[3])    # 4   È possibile accedere a un elemento di una tupla allo stesso modo di un elemento di una lista,                 # specificando l'indice dell'elemento tra parentesi quadre.
2) Per dichiarare una tupla che include un singolo elemento, è necessario utilizzare una virgola finale:
1
2
3
4
a = 'a'    b = 'b',  print(tipo(b))   # <classe 'tupla'>  print(tipo(a))   # <classe 'str'>
3) Si possono assegnare i valori degli elementi della tupla alle singole variabili:
1
2
3
mia_tupla = (1, 2, 3, 4, 5) a, b, c, d, e = mia_tupla stampa(c)    #3
Gli underscore _ possono essere usati come variabili non necessarie
1
2
3
mia_tupla = (1, 2, 3) a, _, _ = mia_tupla stampa(a)    #1
Il numero di variabili deve corrispondere al numero di elementi della tupla!

4) Una tupla può contenere vari elementi nidificati. In questo caso, quando si fa riferimento a elementi  nidificati, è necessario utilizzare parentesi quadre aggiuntive
1
2
mia_tupla = (('a', 'b', 'c'), [1, 2], ((1, 'a' ), ('b', 'c'))) print(mia_tupla[2][1]) # ('b', 'c')

Riferito agli elementi. Tuple nidificate
Le tuple possono contenere altre tuple come elementi. Inoltre, elenchi, stringhe e così via possono essere utilizzati come elementi di una tupla.
L'accesso agli elementi è simile all'accesso agli elementi di un elenco, specificando l'indice dell'elemento tra parentesi quadre. L'indicizzazione inizia da zero.
Quando si fa riferimento a elementi nidificati, è necessario utilizzare parentesi quadre aggiuntive.
  mia_tupla = (('a', 'b', 'c'), [1, 2], ((1, 'a' ), ('b', 'c'))) print(mia_tupla[2][1])    # ('b', 'c')

Confronto di tuple

Quando si confrontano le tuple: 
- i numeri vengono confrontati per valore; 
- stringhe in ordine lessicografico; 
- in caso di parità di elementi nelle stesse posizioni, vengono confrontati i seguenti elementi; 
- il confronto degli elementi avverrà fino alla prima disuguaglianza; 
- durante il confronto, gli elementi devono essere convertiti nello stesso tipo (non è possibile confrontare un numero e una stringa). 

 
Esempio
1
2
3
4
5
6
7
8
9
10
undici
12

LA=4 B=8 C = 'a', D = 'z', E = (14, 'massimo', 'minimo') F = (14, 'massimo', 'minimo') K=999 print(A < B)    # Vero print(C < D)    # Vero print(E > F)    # Vero print(K < F)    # Falso print(C < K)    # TypeError: '<' non supportato # tra istanze di 'str' e 'int'

Fette

L'affettatura può essere eseguita in modo simile alle liste.
Va ricordato che prendendo un elemento per indice o per slice (slice), non modifichiamo in alcun modo la tupla, ne copiamo semplicemente una parte per un ulteriore utilizzo (ad esempio, per stampare , alcuni calcoli, ecc. .p.).

 
Sintassi delle sezioni
my_tuple[start:stop:step]  # start, stop e step

Concatenazione di tuple

È possibile concatenare le tuple per creare un nuovo oggetto (concatenazione, simile alle stringhe).
1
2
3
4
x = (1,2,3,4) y = (5,6,7,8) z = x + y  print(z)  # (1, 2, 3, 4, 5, 6, 7, 8)
Durante l'operazione di moltiplicazione, la tupla viene ripetuta più volte (simile alla moltiplicazione di stringhe).
1
2
3
x = (1,2,3,4) z = x*2 print(z)  # (1, 2, 3, 4, 1, 2, 3, 4)



Rimozione di una tupla

Le operazioni e i metodi di tupla sono simili alle operazioni e ai metodi di elenco. Ad eccezione di quelli che modificano gli elementi di una tupla.
Un elemento contenuto in una tupla non può essere aggiunto o rimosso a causa dell'immutabilità. Tuttavia, la tupla stessa può essere cancellata usando l'operatore del.
1
2
studente = (2007, 'Ivan', 'Ivanov', '9-A', Falso) del studente

Metodi per lavorare con le tuple

I metodi per lavorare con le tuple sono simili ai metodi per lavorare con gli elenchi, ad eccezione dei metodi che modificano la tupla. Tali metodi non sono disponibili a causa dell'immutabilità della tupla. Possono essere applicati creando una nuova tupla.


Esempio di ordinamento di tuple
Puoi facilmente ordinare una tupla usando la funzione sorted().
1
2
3
4
un = (5, 3, 2, 1, 4) print(ordinato(a))    # [1, 2, 3, 4, 5]  a = tupla(ordinata(a))  stampa(a)    # (1, 2, 3, 4, 5) 
Nota che metodi come append(), extend(), remove() NON funzionano con le tuple e pop().