2015-07-01 18 views
0

如果我要帶號碼的清單,做一些像這樣的條件和lambda:使用地圖

lst = [1,2,4,5] 
[1,2,4,5] ==> ['lower','lower','higher','higher'] 

其中3使用地圖功能的條件下,有一種簡單的方法是什麼?

顯然map(lambda x: x<3, lst)讓我非常接近,但是我怎麼能在地圖中包含一個語句讓我立即返回一個字符串而不是布爾值?

回答

4
>>> lst = [1,2,4,5] 
>>> map(lambda x: 'lower' if x < 3 else 'higher', lst) 
['lower', 'lower', 'higher', 'higher'] 

旁白:它通常最好使用列表理解這個

>>> ['lower' if x < 3 else 'higher' for x in lst] 
['lower', 'lower', 'higher', 'higher'] 
+0

你我想通了如何使用列表理解這樣做沒有問題,但對於當我在地圖中使用if語句時,某些原因會導致錯誤。非常感謝!!! – Rob

+0

@Rob http://stackoverflow.com/help/someone-answers – jonrsharpe

+0

供將來參考...這不適用於'numpy.array'使用['numpy.where'](https://stackoverflow.com/問題/ 34381847/ValueError異常-時-試圖對應用-λ-表達到元件-的-一個陣列) – Woofas

1

三元操作符:

map(lambda x: 'lower' if x<3 else 'higher', lst)