Хотите узнать, как поменять местами три переменные без использования временных переменных в Python?
Предположим, мы задали три переменные в Python и нас попросили поменять их местами с условием, что никакая временная переменная не должна использоваться. Каким будет ваш подход?
Обмен предполагает обмен значениями, хранящимися в переменных. Когда мы меняем местами три числа, мы можем сдвинуть их значения так, чтобы каждое число перемещалось к следующему или меняло свою позицию, при этом последнее число перемещалось на позицию первого.
- С использованием присвоения запятой
- С арифметическими операторами
- С помощью оператора XOR
- С помощью функции в Python
С использованием присвоения запятой
Вот полная программа для замены трех переменных без временной переменной с использованием присвоения запятой в Python.
Product1_price = 107 Product2_price= 203 Product3_price = 530 print("Original values:") print("Product1_price =", Product1_price) print("Product2_price =", Product2_price) print("Product3_price =", Product3_price) Product3_price, Product2_price, Product1_price = Product1_price, Product2_price, Product3_price print("\nSwapped values:") print("Product1_price =", Product1_price) print("Product2_price =", Product2_price) print("Product3_price =", Product3_price)
Вывод: здесь мы присвоили переменным другие переменные, разделенные запятыми, чтобы поменять местами три числа в Python.
Original values: Product1_price = 107 Product2_price = 203 Product3_price = 530 Swapped values: Product1_price = 530 Product2_price = 203 Product3_price = 107
На снимке экрана ниже показаны выходные данные программы Python для замены трех переменных без временной переменной.
С арифметическими операторами
Идея состоит в том, чтобы суммировать два числа и сохранить их в одной переменной Python. Другую переменную можно найти, вычитая значение из суммы в Python.
Эта программа Python использует арифметические операторы для замены трех переменных без временной переменной.
Sales_product1 = 2311 Sales_product2= 4189 Sales_product3 = 3337 print("Before swapping Sales_product1 = ",Sales_product1,", Sales_product2 = ",Sales_product2,", Sales_product3 = ",Sales_product3) Sales_product1= Sales_product1 + Sales_product2 + Sales_product3 Sales_product2 = Sales_product1-(Sales_product2+Sales_product3) Sales_product3 = Sales_product1 -(Sales_product2+Sales_product3) Sales_product1 = Sales_product1-(Sales_product2+Sales_product3) print("After swapping Sales_product1 = ",Sales_product1,", Sales_product2 = ",Sales_product2,", Sales_product3 = ",Sales_product3)
- Мы взяли три продукта продаж и добавили значения, присвоенные переменным Sales_product2 и Sales_product3. Затем присвойте сумму переменных Sales_product1.
- Теперь вычтите сумму значений, присвоенных Sales_product2 и Sales_product3, из текущего значения Sales_product1. Затем присвойте результат переменной Sales_product2 и аналогично для Sales_product3.
- Наконец, новое значение обновляется для Sales_product1, Sales_product2 и Sales_product3.
Выход:
Before swapping Sales_product1 = 2311 , Sales_product2 = 4189 , Sales_product3 = 3337 After swapping Sales_product1 = 3337 , Sales_product2 = 2311 , Sales_product3 = 4189
Обратитесь к снимку экрана ниже после выполнения программы Python, чтобы поменять местами три переменные без временной переменной, чтобы увидеть результат.
Другой способ поменять местами три переменные без временной переменной — использовать арифметический оператор, т. е. оператор умножения и деления.
Это полный код Python для замены трех переменных без временной переменной с использованием операторов умножения и деления.
Nike = 3 Old_Navy = 2 Gap = 1 print("Before swapping : Nike = ",Nike,", Old_Navy = ",Old_Navy,", Gap = ",Gap) Nike= Nike * Old_Navy * Gap Old_Navy = Nike //Old_Navy // Gap Gap = Nike // Old_Navy // Gap Nike = Nike // Old_Navy // Gap print("After swapping : Nike = ",Nike,", Old_Navy = ",Old_Navy,", Gap = ",Gap)
Вывод: это аналогичный приведенному выше примеру подход, только вместо суммы мы делаем умножение, а вместо вычитания мы делаем деление.
Before swapping : Nike = 3 , Old_Navy = 2 , Gap = 1 After swapping : Nike = 1 , Old_Navy = 3 , Gap = 2
Обратитесь к снимку экрана ниже, чтобы увидеть выходные данные кода Python для замены трех переменных без временной переменной с использованием операторов умножения и деления.
С помощью оператора XOR
XOR — это логический оператор, который выдает на выходе 1, когда любой из операндов равен 0. XOR — это побитовый оператор, известный в Python как исключающее OR.
Позвольте мне прояснить с помощью таблицы, как логически рассчитывается XOR.
А | Б | А^Б |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Исходный код Python для замены трех переменных без временной переменной с использованием оператора XOR.
California = [1] Texas = [2] Florida = [3] print("Before swapping:") print("California = ",California,", Texas = ",Texas,", Florida = ",Florida) California[0] = California[0] ^ Texas[0] ^ Florida[0] Texas[0] = California[0] ^ Texas[0] ^ Florida[0] Florida[0] = California[0] ^ Texas[0] ^ Florida[0] California[0] = California[0] ^ Texas[0] ^ Florida[0] print("After swapping:") print("California = ",California,", Texas = ",Texas,", Florida = ",Florida)
В программах Python для выполнения побитовой операции XOR(что означает, что операции работают на уровне отдельных битов) для обмена значениями между переменными. Затем он обновит XOR всех переменных, эффективно меняя их значения.
California[0] = California[0] ^ Texas[0] ^ Florida[0] Texas[0] = California[0] ^ Texas[0] ^ Florida[0] Florida[0] = California[0] ^ Texas[0] ^ Florida[0] California[0] = California[0] ^ Texas[0] ^ Florida[0]
Выход:
Before swapping: California = [1] , Texas = [2] , Florida = [3] After swapping: California = [3] , Texas = [1] , Florida = [2]
Чтобы увидеть выходные данные программы Python для замены трех переменных без временной переменной с использованием оператора XOR, обратитесь к изображению ниже.
С помощью функции в Python
Вот полный исходный код Python для замены трех чисел с помощью функции Python.
def swapThree_num(num_one,num_two,num_three): num_one= num_one + num_two + num_three num_two = num_one -(num_two+num_three) num_three = num_one -(num_two+num_three) num_one = num_one -(num_two+num_three) print("After swapping num_one =",num_one,",num_two =",num_two,", num_three =", num_three) if __name__ == '__main__': num_one = 18 num_two = 25 num_three = 13 print("Before swapping num_one =",num_one,", num_two =",num_two,", num_three =", num_three) swapThree_num(18, 25, 13)
Выход:
Before swapping num_one = 18 , num_two = 25 , num_three = 13 After swapping num_one = 13 ,num_two = 18 , num_three = 25
На изображении ниже показан вывод кода Python для замены трех чисел с помощью функции.