← Все вопросы

Как поменять местами две переменные без третьей?

Задан 9 месяцев назад563 просмотров3 ответа
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 месяцев назад

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект