临时变量
通过建立一个临时变量来实现两数交换:
def swap(x, y):
print(x, y)
tmp = x
x = y
y = tmp
print(x, y)
return x, y
if __name__ == '__main__':
swap(1, 2)
缺点:
需要消耗额外的内存。
优点:
不限制类型,大多数类型都能使用该操作。
加减交换
通过加减法实现:
def swap(x, y):
print(x, y)
x = x + y
y = x - y
x = x - y
print(x, y)
return x, y
if __name__ == '__main__':
swap(1, 2)
假设两个数保存在x和y中:
-
先将y中的值加到x中。
即这两个数一同保存在同一内存空间x中。
-
然后用x的值减去y的值,再将其保存到内存y中。
x-y即为x最初的值。
-
最后再用x的值减去y的值,赋给内存x。
x最初的值已经在y中,所以x-y的值为y最初的值。
缺点:
该方法只适用于数值不大的数,如果数值过大,可能会越界(对于某些语言来说)。
异或交换
通过异或的操作实现:
def swap(x, y):
print(x, y)
x = x ^ y
y = x ^ y
x = x ^ y
print(x, y)
return x, y
if __name__ == '__main__':
swap(1, 2)
缺点:
只能对整数类型执行位操作,不能对实数类型进行位操作。
评论