Tildeling af flere eller den samme værdi til flere variabler i Python

Forretning

I Python bruges =-operatoren til at tildele værdier til variabler.

a = 100
b = 200

print(a)
# 100

print(b)
# 200

Som i eksemplet ovenfor kan du tildele værdier til flere variabler på én gang i stedet for én ad gangen, hvilket er praktisk, fordi det kun kræver én enkelt kodelinje at skrive.

Følgende to tilfælde er beskrevet.

  • Tildele flere værdier til flere variabler
  • Tildele den samme værdi til flere variabler

Tildele flere værdier til flere variabler

Der kan tildeles flere værdier til flere variabler samtidig ved at adskille variabler og værdier med kommaer.

a, b = 100, 200

print(a)
# 100

print(b)
# 200

Tre eller flere variabler, hver af forskellig type, er acceptable.

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

print(a)
# 0.1

print(b)
# 100

print(c)
# string

Hvis der er én variabel på venstre side, tildeles den som en tupel.

a = 100, 200

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

Hvis antallet af variabler i venstre side ikke svarer til antallet af værdier i højre side, opstår der en ValueError-fejl, men resten kan tildeles som en liste ved at tilføje en asterisk til variablen.

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

Du kan finde flere oplysninger om asterisker og om, hvordan du tildeler elementer i en tupel eller liste til flere variabler, i følgende artikel.

Tildele den samme værdi til flere variabler

Den samme værdi kan tildeles flere variabler ved at bruge = efter hinanden. Dette er nyttigt til at initialisere flere variabler til den samme værdi.

a = b = 100

print(a)
# 100

print(b)
# 100

Mere end 3 stykker er acceptable.

a = b = c = 'string'

print(a)
# string

print(b)
# string

print(c)
# string

Efter tildeling af den samme værdi kan en anden værdi tildeles en af dem.

a = 200

print(a)
# 200

print(b)
# 100

Vær forsigtig, når du tildeler ændrede objekter som f.eks. lister og ordbogstyper frem for uforanderlige (uændrede) objekter som f.eks. hele tal, flydende tal og strenge.

Hvis du bruger = fortløbende betyder det, at alle variabler peger på det samme objekt, så hvis du ændrer værdien af et element eller tilføjer et nyt element, vil de andre også ændre sig.

a = b = [0, 1, 2]

print(a is b)
# True

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

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

Samme som nedenfor.

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

print(a is b)
# True

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

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

Hvis du ønsker at behandle dem separat, skal du blot tildele dem hver for sig.

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]

Der er også metoder til at generere overfladiske og dybe kopier med copy() og deepcopy() i kopimodulet.