Python Tutorial

Как поменять значения переменных местами

Как поменять значения переменных местами в Python

Первый способ - временная переменная:

Записываем во временную переменную temp значение a. В а записываем значение b. В b записываем значение временной переменной temp
a = 10
b = 7

print(f'{a=}')
print(f'{b=}')

temp = a
a = b
b = temp

print(f'{a=}')
print(f'{b=}')
Второй способ - распаковка с присваиванием:

В данном случае инструкция присваивания повторно связывает переменную a со значением, на которое ссылалась переменная b, а переменную b со значением, на которое ссылалась переменная a
a = 10
b = 7

print(f'{a=}')
print(f'{b=}')

a, b = b, a

print(f'{a=}')
print(f'{b=}')
Третий способ - побитовый оператор XOR:

Для этого способа надо вспомнить, что XOR возвращает единицу, если один из двух бит равен единице, а второй нулю. Если оба бита равны единице или нулю, то XOR вернет 0
Первым шагом мы вычисляем:
10 ^ 7 или 1010 ^ 111 = 1101 (13 в десятичной системе счисления)

Вторым шагом мы вычисляем:
13 ^ 7 или 1101 ^ 111 = 1010 (10 в десятичной системе счисления)

Третьим шагом вычисляем:
13 ^ 10 или 1101 ^ 111 = 1010 (7 в десятичной системе счисления)

Таким хитрым способом с помощью XOR мы поменяли значения переменных местами
a = 10
b = 7

print(f'{a=}')
print(f'{b=}')

a = a ^ b
b = a ^ b
a = a ^ b

print(f'{a=}')
print(f'{b=}')

Полезно