← Все вопросы
Как поменять местами две переменные без третьей?
23
В других языках я делал через временную переменную:
tmp = a
a = b
b = tmp
Говорят, в Python можно короче. Как?
3 ответа
23
В Python есть распаковка кортежа:
a, b = b, a
Справа собирается кортеж (b, a), потом распаковывается в a, b. Одна строка, без временной переменной.
балбес балбесов золотой ответ · 9 месяцев назад
Сергей Новоселов вот это магия, спасибо! · 9 месяцев назад
10
Можно и так, но первый вариант понятнее новичкам. a, b = b, a — идиоматично, на собесах любят спрашивать почему работает.
-4
можно через xor: a ^= b ^= a ^= b — без третьей переменной и быстрее
Владислав Рыженков это про C, не про питон · 9 месяцев назад
Анастасия Андреева в питоне так лучше не делать, работает не для всех типов и читается ужасно · 9 месяцев назад
Ваш ответ
Войдите, чтобы ответить на вопрос.