Samtidige tilordninger

I artikkelen om varabler lærer vi å tilordne en verdi til en variabel. Skriver vi for eksempel

x = 3

tilordnes variabelen x verdien 3.

Men vi kan også gjøre flere tilordninger samtidig. Vi lister da opp variablene før likhetstegnet, atskilt med komma, og så verdiene etter likhetstegnet, atskilt med komma. For eksempel vil

x, y, z = 3, -2, 8

tilordne variabelen x verdien 3, variabelen y verdien −2 og variabelen z verdien 8.

Nå skal vi se på et eksempel der denne funksjonaliteten er spesielt praktisk.

La oss si at vi har to variable, x og y, og skal bytte om verdiene deres, altså skal y få verdien til x, og x skal få verdien til y.

Vi prøver først med følgende kode, der vi for eksemplets skyld starter med å sette x = 1 og y = 2:

x, y = 1, 2
# Bytt om x og y
x = y
y = x
print(f"x = {x}, y = {y}")

Vi får imidlertid skrevet ut at både x og y er 2.

Grunnen er at vi først setter x lik y, og når vi etterpå setter y lik x, har x mistet sin opprinnelige verdi og blitt lik y. Så vi setter egentlig y lik seg selv.

En mulig løsning er å bruke en hjelpevariabel, la oss kalle den temp:

x, y = 1, 2
# Bytt om x og y
temp = y
y = x
x = temp
print(f"x = {x}, y = {y}")

Nå har vi fått byttet om verdiene slik vi ønsket. Dette er en klassisk løsning på et klassisk problem i programmering. I Python kan vi imidlertid gjøre dette på en enklere måte:

x, y = 1, 2
# Bytt om x og y
y, x = x, y
print(f"x = {x}, y = {y}")

Alle verdiene på høyre side av likhetstegnet hentes ut av variablene før de tilordnes variablene på venstre side av likhetstegnet. Det vil si at når vi skriver

y, x = x, y

blir den gamle verdien til x tilordnet y, og den gamle verdien til y tilordnet x, og verdiene er blitt byttet om.

Kilder

    • Matthes A. (2019). Python Crash Course. no starch press