2016-01-04 46 views
-1

功能時,我想轉換以下,以利用地圖功能:Python的 - 使用地圖具有3個參數

tmplist = [3434,34,342,123123,451414,124124,1234124] 
b=1234 
a=5234 

for i in tmplist: 
      b, a = myfunc(b, a, i) 

請注意,這兩個B和A將在每次迭代被覆蓋。這個問題最初的需求是使代碼更有效率。我正在尋求一個實現,它將幫助我的迭代比上面的for循環快得多。

謝謝。

+1

你想更新每次迭代的a,b值嗎? – tglaria

+0

是的,我需要這樣做 –

+0

那麼爲什麼要使用'map'? 我不認爲你會有一個容易閱讀的代碼。 – tglaria

回答

3

這是一個減少,而不是一張地圖。爲減少相應的功能是reduce

b, a = reduce(lambda ba, x: myfunc(ba[0], ba[1], x), tmplist, (b, a)) 

注意,這不會與你的工作效率的問題有所幫助。如果您想提高代碼的效率,您需要對算法進行改進,否則您需要從內部循環中刪除Python級別的代碼。

+0

感謝這一點,但不幸的是,它並沒有改善執行時間,而是通過reduce函數得到了最壞的結果。更具體地說,它將執行時間提高了10微秒。 –

+0

@Captain_Harlock:是的,正如我所說,這是預期的。 '地圖'也不會幫助你。 – user2357112