Assegnare più o lo stesso valore a più variabili in Python

Attività commerciale

In Python, l'operatore = è usato per assegnare valori alle variabili.

a = 100
b = 200

print(a)
# 100

print(b)
# 200

Come nell'esempio precedente, potete assegnare valori a più variabili in una volta sola invece che una alla volta, il che è conveniente perché richiede solo una semplice linea di codice da scrivere.

Sono descritti i seguenti due casi.

  • Assegnare più valori a più variabili
  • Assegnare lo stesso valore a più variabili

Assegnare più valori a più variabili

Valori multipli possono essere assegnati a più variabili simultaneamente separando le variabili e i valori con delle virgole.

a, b = 100, 200

print(a)
# 100

print(b)
# 200

Tre o più variabili, ciascuna di tipo diverso, sono accettabili.

a, b, c = 0.1, 100, 'string'

print(a)
# 0.1

print(b)
# 100

print(c)
# string

Se c'è una variabile sul lato sinistro, viene assegnata come tupla.

a = 100, 200

print(a)
print(type(a))
# (100, 200)
# <class 'tuple'>

Se il numero di variabili sul lato sinistro non corrisponde al numero di valori sul lato destro, risulterà un errore ValueError, ma il resto può essere assegnato come lista aggiungendo un asterisco alla variabile.

# a, b = 100, 200, 300
# ValueError: too many values to unpack (expected 2)

# a, b, c = 100, 200
# ValueError: not enough values to unpack (expected 3, got 2)

a, *b = 100, 200, 300

print(a)
print(type(a))
# 100
# <class 'int'>

print(b)
print(type(b))
# [200, 300]
# <class 'list'>

*a, b = 100, 200, 300

print(a)
print(type(a))
# [100, 200]
# <class 'list'>

print(b)
print(type(b))
# 300
# <class 'int'>

Per maggiori informazioni sugli asterischi e su come assegnare elementi di una tupla o di una lista a variabili multiple, si veda il seguente articolo.

Assegnare lo stesso valore a più variabili

Lo stesso valore può essere assegnato a più variabili usando = consecutivamente. Questo è utile per inizializzare più variabili allo stesso valore.

a = b = 100

print(a)
# 100

print(b)
# 100

Più di 3 pezzi sono accettabili.

a = b = c = 'string'

print(a)
# string

print(b)
# string

print(c)
# string

Dopo aver assegnato lo stesso valore, un altro valore può essere assegnato a uno di essi.

a = 200

print(a)
# 200

print(b)
# 100

Fate attenzione quando assegnate oggetti mutabili come liste e tipi di dizionario, piuttosto che oggetti immutabili (immutabili) come interi, numeri in virgola mobile e stringhe.

Usare = consecutivamente significa che tutte le variabili puntano allo stesso oggetto, quindi se si cambia il valore di un elemento o si aggiunge un nuovo elemento, anche l'altro cambierà.

a = b = [0, 1, 2]

print(a is b)
# True

a[0] = 100
print(a)
# [100, 1, 2]

print(b)
# [100, 1, 2]

Come sotto.

b = [0, 1, 2]
a = b

print(a is b)
# True

a[0] = 100
print(a)
# [100, 1, 2]

print(b)
# [100, 1, 2]

Se volete elaborarli separatamente, assegnateli semplicemente a ciascuno.

after c = []; d = [], c and d are guaranteed to refer to two different, unique, newly created empty lists. (Note that c = d = [] assigns the same object to both c and d.)
3. Data model — Python 3.10.4 Documentation

a = [0, 1, 2]
b = [0, 1, 2]

print(a is b)
# False

a[0] = 100
print(a)
# [100, 1, 2]

print(b)
# [0, 1, 2]

Ci sono anche metodi per generare copie superficiali e profonde con copy() e deepcopy() nel modulo copy.