1.设置中间变量
def swap(a,b):
tmp = a
a = b
b = tmp
print(a,b)
2.采取两个值相互加减的方法,不考虑效率问题
def swap(a,b):
a = a + b
b = a - b
a = a - b
print(a,b)
3.使用python独有的方法
def swap(a,b):
a,b = b,a
print(a,b)
4.使用异或的方法
def swap(a,b):
a = a ^ b
b = a ^ b
a = a ^ b
print(a,b)
异或的方法显得高大上一些,采取了异或的方法,可能相对于其他的方法难理解一些
原理如下:
首先我们要知道,按位异或的运算,计算机会自动的把数字转换成二进制,用相同的位数比较,结果相同等于0,结果不相同等于1
依照这一点,我们可以得出结论:
与0比较的任何数都不会发生变化。(0^0=0,0^1=1)
与1比较的任何数都会变成相反的数字。(1^1=0,1^0=1)
假设a=5,b=7,抓换成二进制后:
分别是101(a),111(b)。进行异或运算后,得出010(c)
我们可以看出,最终的结果是1的部分。一定是a,b之前不同的部分。
根据前面的结论,“与1比较的任何数都会变成相反的数字”。因此a与c进行异或运算,就会是b的值。b与c运算,同样会变成a的值