Is there a standardized method to swap two variables in Python?
Существует ли стандартизированный метод для замены двух переменных в Python?
В Python я видел, как значения двух переменных менялись местами с использованием этого синтаксиса:
left, right = right, left
Считается ли это стандартным способом замены значений двух переменных или существуют какие-то другие средства, с помощью которых две переменные по соглашению чаще всего меняются местами?
Переведено автоматически
Ответ 1
Python вычисляет выражения слева направо. Обратите внимание, что при вычислении присваивания правая часть вычисляется перед левой.
Вычисляется правая часть b,a, то есть в памяти создается кортеж из двух элементов. Два элемента - это объекты, обозначенные идентификаторами b и a, которые существовали до того, как команда была обнаружена во время выполнения программы.
Сразу после создания этого кортежа назначение этого объекта tuple по-прежнему не производилось, но это не имеет значения, Python внутренне знает, где он находится.
Затем вычисляется левая сторона, то есть кортеж присваивается левой стороне.
Поскольку левая часть состоит из двух идентификаторов, кортеж распаковывается для того, чтобы первый идентификатор a был присвоен первому элементу кортежа (который является объектом, который ранее был b перед заменой, потому что у него было имя b) , а второй идентификатор b присваивается второму элементу кортежа (который является объектом, который ранее был a перед заменой, потому что его идентификаторы были a)
Этот механизм эффективно поменял местами объекты, присвоенные идентификаторам a и b
Итак, отвечая на ваш вопрос: ДА, это стандартный способ замены двух идентификаторов на двух объектах. Кстати, объекты - это не переменные, это объекты.
Ответ 2
Это стандартный способ замены двух переменных, да.
Ответ 3
Я знаю три способа замены переменных, но a, b = b, a это самый простой. Существует
XOR (для целых чисел)
x = x ^ y y = y ^ x x = x ^ y
Или кратко,
x ^= y y ^= x x ^= y
Временная переменная
w = x x = y y = w del w
Замена кортежей
x, y = y, x
Ответ 4
Я бы не сказал, что это стандартный способ замены, потому что это вызовет некоторые неожиданные ошибки.