之前有段時間想用python寫個交換兩個變數的值的函式,我們知道在c++中是傳入兩個變數的指標或者引用,但是python中並沒有指標或者引用的概念,而且資源**全部由python的執行環境接管了,要實現變數交換用函式實現反而麻煩了,直接a,b=b,a就把a和b的值交換了,呵呵,很簡潔吧,這是python的一貫作風,從**上看,連臨時變數都沒有用到。
可以用這個實現乙個簡單的氣泡排序,**如下:
narr = [1, 2, 5, 3, 6, 8, 4]
for i in range(len(narr) - 1, 1, -1):
for j in range(0, i):
if narr [j] > narr [j + 1]:
narr [j], narr [j + 1] = narr [j + 1], narr [j]
print narr
說到交換兩個數不使用臨時變數,想起之前遇到得乙個著名的面試題,怎樣不使用臨時變數交換兩個變數的值,如果是使用python,這**還是什麼問題,一句搞定,呵呵,不過c++裡面怎麼實現呢,一種常見的做法如下:
b=a+b
a=b-a
b=b-a
不過這種實現是錯的,在a和b很小的時候沒有問題,但是當a和b很大的時候,二者的和會溢位,正確的實現方法如下:
a ^= b;
b ^= a;
a ^= b;
也就是使用異或在實現。
python 中交換變數的值
def exchange a 10 b 30 加法 a a b b a b a a b 乘法 a a b b a b a a b a a b b a b 或異運算 a a b print a is d a print b is d b exchange def exchange a,b b,a na...
Python交換變數值
平時時不時會面面實習生,大多數的同學在學校裡都已經掌握了python。面試的時候要求同學們實現乙個簡單的函式,交換兩個變數的值,大多數的同學給出的都是如下的答案 def swap x,y tmp x x y y tmp實際上,python中還有更簡潔的更具python風格的實現,如下 def swa...
變數的交換
變數的名字不能重名 變數的交換的第乙個思路 使用第三方的變數進行交換 var num1 10 var num2 20 把num1這個變數的值取出來放在temp變數中 var temp num1 把num2的這個變數的值取出來放在num1變數中 num1 num2 把temp變數的值取出來放在num2...