Atribuirea mai multor variabile sau a aceleiași valori la mai multe variabile în Python

Afaceri

În Python, operatorul = este utilizat pentru a atribui valori variabilelor.

a = 100
b = 200

print(a)
# 100

print(b)
# 200

La fel ca în exemplul de mai sus, puteți atribui valori la mai multe variabile deodată, în loc de una la un moment dat, ceea ce este convenabil deoarece este necesară scrierea unei singure linii de cod.

Sunt descrise următoarele două cazuri.

  • Atribuiți mai multe valori la mai multe variabile
  • Atribuiți aceeași valoare la mai multe variabile

Atribuiți mai multe valori la mai multe variabile

Mai multe valori pot fi atribuite simultan mai multor variabile prin separarea variabilelor și a valorilor cu virgule.

a, b = 100, 200

print(a)
# 100

print(b)
# 200

Se acceptă trei sau mai multe variabile, fiecare de un tip diferit.

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

print(a)
# 0.1

print(b)
# 100

print(c)
# string

În cazul în care există o variabilă în partea stângă, aceasta este atribuită ca un tupluplu.

a = 100, 200

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

În cazul în care numărul de variabile din partea stângă nu corespunde cu numărul de valori din partea dreaptă, se va produce o eroare ValueError, dar restul poate fi atribuit ca o listă prin adăugarea unui asterisc la variabilă.

# 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'>

Pentru mai multe informații despre asteriscuri și despre modul în care se atribuie elemente ale unui tuple sau ale unei liste la mai multe variabile, consultați următorul articol.

Atribuiți aceeași valoare la mai multe variabile

Aceeași valoare poate fi atribuită la mai multe variabile prin utilizarea consecutivă a lui =. Acest lucru este util pentru inițializarea mai multor variabile la aceeași valoare.

a = b = 100

print(a)
# 100

print(b)
# 100

Se acceptă mai mult de 3 bucăți.

a = b = c = 'string'

print(a)
# string

print(b)
# string

print(c)
# string

După atribuirea aceleiași valori, o altă valoare poate fi atribuită uneia dintre ele.

a = 200

print(a)
# 200

print(b)
# 100

Fiți atenți atunci când atribuiți obiecte mutabile, cum ar fi listele și tipurile de dicționare, mai degrabă decât obiecte imuabile (neschimbabile), cum ar fi numere întregi, numere cu virgulă mobilă și șiruri de caractere.

Utilizarea consecutivă a lui = înseamnă că toate variabilele indică același obiect, astfel încât, dacă modificați valoarea unui element sau adăugați un nou element, și celelalte se vor modifica.

a = b = [0, 1, 2]

print(a is b)
# True

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

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

La fel ca mai jos.

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

print(a is b)
# True

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

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

Dacă doriți să le procesați separat, pur și simplu atribuiți-le fiecăruia.

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]

Există, de asemenea, metode pentru a genera copii superficiale și profunde cu copy() și deepcopy() în modulul copy.