Python3下實現數值交換的幾種方式

使用臨時變量

該方法是最簡單的,也是最容易理解的,適用於所有編程語言,其實現過程如下:

tmp = a
a = b
b = tmp

使用tuple元組

該方法是Python下特有的方法,並且只需要一行代碼即可實現,其使用到了元組(tuple),其大致原理如下:

  • 右邊的 b, a 會構成一個由 b 和 a 組成的元組
  • 對元組進行拆包,然後再分別賦值給到左邊的 a, b
a, b = b, a

我們也可以藉助列表,右邊放一個由 b 和 a 組成的列表來實現,但注意右邊不能放一個集合中,因爲集合是無序的,會導致最終交換結果不對。

a, b, c, d = 100, 200, 3000, 400

# 右邊爲元組
# a, b, c, d = d, c, b, a
# print(a, b, c, d)  # 400 3000 200 100

# 右邊爲列表
# a, b, c, d = [d, c, b, a]
# print(a, b, c, d)  # 400 3000 200 100

# 右邊爲集合,會導致最終交換數值不對
a, b, c, d = {d, c, b, a}
print(a, b, c, d)  # 400 100 3000 200

使用 加減法 或 乘除法

無論使用 加減法 或 乘除法,都不需要使用到臨時變量,其實現過程如下:

# 加減法
a = a + b
b = a - b  # b = (a + b) - b = a
a = a - b  # a = (a + b) - b = (a + b) - a = b 

# 乘除法
a = a * b
b = a // b  # b = (a * b) // b = a
a = a // b  # a = (a * b) // b = (a * b) // a = b 

使用異或運算

異或運算的特點:0異或任一個數a,其結果爲 a;任一數a異或自己,也就是 a異或a,其結果爲 0。同時異或運算滿足交換律。

使用異或運算,也不需要使用到臨時變量,其實現過程如下:

a = a ^ b
b = a ^ b  # b = (a ^ b) ^ b = a ^ (b ^ b) = a ^ 0 = a
a = a ^ b  # a = (a ^ b) ^ b = (a ^ b) ^ a = (a ^ a) ^ b = 0 ^ b = b
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章