Tupla Python (con esempi)

In questo articolo imparerai tutto sulle tuple di Python. Più specificamente, cosa sono le tuple, come crearle, quando usarle e vari metodi con cui dovresti avere familiarità.

Video: elenchi e tuple di Python

Una tupla in Python è simile a un elenco. La differenza tra i due è che non possiamo cambiare gli elementi di una tupla una volta assegnata, mentre possiamo cambiare gli elementi di una lista.

Creazione di una tupla

Una tupla viene creata inserendo tutti gli elementi (elementi) tra parentesi (), separati da virgole. Le parentesi sono facoltative, tuttavia è buona norma utilizzarle.

Una tupla può avere un numero qualsiasi di elementi e possono essere di tipi diversi (intero, float, elenco, stringa, ecc.).

 # Different types of tuples # Empty tuple my_tuple = () print(my_tuple) # Tuple having integers my_tuple = (1, 2, 3) print(my_tuple) # tuple with mixed datatypes my_tuple = (1, "Hello", 3.4) print(my_tuple) # nested tuple my_tuple = ("mouse", (8, 4, 6), (1, 2, 3)) print(my_tuple)

Produzione

 () (1, 2, 3) (1, 'Hello', 3.4) ('mouse', (8, 4, 6), (1, 2, 3))

È anche possibile creare una tupla senza utilizzare le parentesi. Questo è noto come impacchettamento di tuple.

 my_tuple = 3, 4.6, "dog" print(my_tuple) # tuple unpacking is also possible a, b, c = my_tuple print(a) # 3 print(b) # 4.6 print(c) # dog

Produzione

 (3, 4.6, 'cane') 3 4.6 cane

Creare una tupla con un elemento è un po 'complicato.

Avere un elemento tra parentesi non è sufficiente. Avremo bisogno di una virgola finale per indicare che si tratta, in effetti, di una tupla.

 my_tuple = ("hello") print(type(my_tuple)) # # Creating a tuple having one element my_tuple = ("hello",) print(type(my_tuple)) # # Parentheses is optional my_tuple = "hello", print(type(my_tuple)) # 

Produzione

 

Accedi agli elementi della tupla

Esistono vari modi in cui possiamo accedere agli elementi di una tupla.

1. Indicizzazione

Possiamo usare l'operatore index ()per accedere a un elemento in una tupla, dove l'indice inizia da 0.

Quindi, una tupla con 6 elementi avrà indici da 0 a 5. Il tentativo di accedere a un indice al di fuori dell'intervallo dell'indice di tupla (6,7,… in questo esempio) solleverà un IndexError.

L'indice deve essere un numero intero, quindi non possiamo usare float o altri tipi. Questo risulterà in TypeError.

Allo stesso modo, si accede alle tuple annidate utilizzando l'indicizzazione annidata, come mostrato nell'esempio seguente.

 # Accessing tuple elements using indexing my_tuple = ('p','e','r','m','i','t') print(my_tuple(0)) # 'p' print(my_tuple(5)) # 't' # IndexError: list index out of range # print(my_tuple(6)) # Index must be an integer # TypeError: list indices must be integers, not float # my_tuple(2.0) # nested tuple n_tuple = ("mouse", (8, 4, 6), (1, 2, 3)) # nested index print(n_tuple(0)(3)) # 's' print(n_tuple(1)(1)) # 4

Produzione

 punti 4

2. Indicizzazione negativa

Python consente l'indicizzazione negativa per le sue sequenze.

L'indice di -1 si riferisce all'ultimo elemento, -2 al penultimo elemento e così via.

 # Negative indexing for accessing tuple elements my_tuple = ('p', 'e', 'r', 'm', 'i', 't') # Output: 't' print(my_tuple(-1)) # Output: 'p' print(my_tuple(-6))

Produzione

 tp

3. Affettare

Possiamo accedere a una serie di elementi in una tupla utilizzando l'operatore di suddivisione dei due punti :.

 # Accessing tuple elements using slicing my_tuple = ('p','r','o','g','r','a','m','i','z') # elements 2nd to 4th # Output: ('r', 'o', 'g') print(my_tuple(1:4)) # elements beginning to 2nd # Output: ('p', 'r') print(my_tuple(:-7)) # elements 8th to end # Output: ('i', 'z') print(my_tuple(7:)) # elements beginning to end # Output: ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z') print(my_tuple(:))

Produzione

 ('r', 'o', 'g') ('p', 'r') ('i', 'z') ('p', 'r', 'o', 'g', 'r ',' a ',' m ',' i ',' z ')

La suddivisione in sezioni può essere visualizzata al meglio considerando che l'indice si trova tra gli elementi come mostrato di seguito. Quindi, se vogliamo accedere a un intervallo, abbiamo bisogno dell'indice che taglierà la porzione dalla tupla.

Element Slicing in Python

Modifica di una tupla

A differenza degli elenchi, le tuple non sono modificabili.

Ciò significa che gli elementi di una tupla non possono essere modificati una volta assegnati. Ma, se l'elemento è esso stesso un tipo di dati modificabile come list, i suoi elementi nidificati possono essere modificati.

Possiamo anche assegnare una tupla a valori diversi (riassegnazione).

 # Changing tuple values my_tuple = (4, 2, 3, (6, 5)) # TypeError: 'tuple' object does not support item assignment # my_tuple(1) = 9 # However, item of mutable element can be changed my_tuple(3)(0) = 9 # Output: (4, 2, 3, (9, 5)) print(my_tuple) # Tuples can be reassigned my_tuple = ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z') # Output: ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z') print(my_tuple)

Produzione

 (4, 2, 3, (9, 5)) ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')

We can use + operator to combine two tuples. This is called concatenation.

We can also repeat the elements in a tuple for a given number of times using the * operator.

Both + and * operations result in a new tuple.

 # Concatenation # Output: (1, 2, 3, 4, 5, 6) print((1, 2, 3) + (4, 5, 6)) # Repeat # Output: ('Repeat', 'Repeat', 'Repeat') print(("Repeat",) * 3)

Output

 (1, 2, 3, 4, 5, 6) ('Repeat', 'Repeat', 'Repeat')

Deleting a Tuple

As discussed above, we cannot change the elements in a tuple. It means that we cannot delete or remove items from a tuple.

Deleting a tuple entirely, however, is possible using the keyword del.

 # Deleting tuples my_tuple = ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z') # can't delete items # TypeError: 'tuple' object doesn't support item deletion # del my_tuple(3) # Can delete an entire tuple del my_tuple # NameError: name 'my_tuple' is not defined print(my_tuple)

Output

 Traceback (most recent call last): File "", line 12, in NameError: name 'my_tuple' is not defined

Tuple Methods

Methods that add items or remove items are not available with tuple. Only the following two methods are available.

Some examples of Python tuple methods:

 my_tuple = ('a', 'p', 'p', 'l', 'e',) print(my_tuple.count('p')) # Output: 2 print(my_tuple.index('l')) # Output: 3

Output

 2 3

Other Tuple Operations

1. Tuple Membership Test

We can test if an item exists in a tuple or not, using the keyword in.

 # Membership test in tuple my_tuple = ('a', 'p', 'p', 'l', 'e',) # In operation print('a' in my_tuple) print('b' in my_tuple) # Not in operation print('g' not in my_tuple)

Output

 True False True

2. Iterating Through a Tuple

We can use a for loop to iterate through each item in a tuple.

 # Using a for loop to iterate through a tuple for name in ('John', 'Kate'): print("Hello", name)

Output

 Hello John Hello Kate

Advantages of Tuple over List

Since tuples are quite similar to lists, both of them are used in similar situations. However, there are certain advantages of implementing a tuple over a list. Below listed are some of the main advantages:

  • Generalmente usiamo tuple per tipi di dati eterogenei (diversi) ed elenchi per tipi di dati omogenei (simili).
  • Poiché le tuple sono immutabili, l'iterazione di una tupla è più veloce rispetto a list. Quindi c'è un leggero aumento delle prestazioni.
  • Le tuple che contengono elementi immutabili possono essere utilizzate come chiave per un dizionario. Con gli elenchi, questo non è possibile.
  • Se si dispone di dati che non cambiano, implementarli come tupla garantirà che rimangano protetti da scrittura.

Articoli interessanti...