1. 程式人生 > >python中交換兩個變數

python中交換兩個變數

之前有段時間想用python寫個交換兩個變數的值的函式,我們知道在C++中是傳入兩個變數的指標或者引用,但是python中並沒有指標或者引用的概念,而且資源回收全部由python的執行環境接管了,要實現變數交換用函式實現反而麻煩了,直接a,b=b,a就把a和b的值交換了,呵呵,很簡潔吧,這是python的一貫作風,從程式碼上看,連臨時變數都沒有用到。

可以用這個實現一個簡單的氣泡排序,程式碼如下:

  1. nArr = [1253684]
  2. for i in range(len(nArr) - 11, -1):
  3. for j in range(0, i):
  4. if nArr 
    [j] > nArr [j + 
    1]:
  5.             nArr [j], nArr [j + 1] = nArr [j + 1], nArr [j]
  6. print nArr 

說到交換兩個數不使用臨時變數,想起之前遇到得一個著名的面試題,怎樣不使用臨時變數交換兩個變數的值,如果是使用python,這哪裡還是什麼問題,一句搞定,呵呵,不過C++裡面怎麼實現呢,一種常見的做法如下:

  1. b=a+b
  2. a=b-a
  3. b=b-a

不過這種實現是錯的,在a和b很小的時候沒有問題,但是當a和b很大的時候,二者的和會溢位,正確的實現方法如下:

  1. a   ^=   b;
  2. b   ^=   a;
  3. a   ^=   b;

也就是使用異或在實現。