Pripisovanje več ali iste vrednosti več spremenljivkam v Pythonu

Posel

V Pythonu se operator = uporablja za dodeljevanje vrednosti spremenljivkam.

a = 100
b = 200

print(a)
# 100

print(b)
# 200

Kot v zgornjem primeru lahko vrednosti priredite več spremenljivkam hkrati in ne eni naenkrat, kar je priročno, saj je za to potrebna le ena preprosta vrstica kode.

Opisana sta naslednja dva primera.

  • Pripisovanje več vrednosti več spremenljivkam
  • Enaka vrednost je dodeljena več spremenljivkam

Pripisovanje več vrednosti več spremenljivkam

Več vrednosti lahko hkrati pripišete več spremenljivkam tako, da spremenljivke in vrednosti ločite z vejicami.

a, b = 100, 200

print(a)
# 100

print(b)
# 200

Sprejemljive so tri ali več spremenljivk, vsaka druge vrste.

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

print(a)
# 0.1

print(b)
# 100

print(c)
# string

Če je na levi strani ena spremenljivka, je dodeljena kot tuple.

a = 100, 200

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

Če se število spremenljivk na levi strani ne ujema s številom vrednosti na desni strani, se pojavi napaka ValueError, preostale pa lahko pripišete kot seznam tako, da spremenljivki dodate zvezdico.

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

Za več informacij o zvezdicah in načinu dodeljevanja elementov tuple ali seznama več spremenljivkam glejte naslednji članek.

Enaka vrednost je dodeljena več spremenljivkam

Isto vrednost lahko pripišete več spremenljivkam z zaporedno uporabo =. To je uporabno za inicializacijo več spremenljivk na isto vrednost.

a = b = 100

print(a)
# 100

print(b)
# 100

Več kot 3 kosi so sprejemljivi.

a = b = c = 'string'

print(a)
# string

print(b)
# string

print(c)
# string

Po dodelitvi iste vrednosti lahko eni od njih dodelite drugo vrednost.

a = 200

print(a)
# 200

print(b)
# 100

Pri dodeljevanju spremenljivih predmetov, kot so seznami in tipi slovarjev, bodite previdni in ne nespremenljivih (nespremenljivih) predmetov, kot so cela števila, števila s plavajočo vejico in nizi.

Zaporedna uporaba = pomeni, da vse spremenljivke kažejo na isti objekt, zato se ob spremembi vrednosti enega elementa ali dodajanju novega elementa spremenijo tudi drugi.

a = b = [0, 1, 2]

print(a is b)
# True

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

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

Enako kot spodaj.

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

print(a is b)
# True

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

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

Če jih želite obdelati ločeno, jih preprosto pripišite vsakemu posebej.

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]

V modulu copy sta na voljo tudi metodi za ustvarjanje plitvih in globokih kopij s funkcijama copy() in deepcopy().