2010-12-04 36 views
1

足夠簡單,但我找不到一個體面的例子;所以我問了這裏!Python地圖()與案例

基本上我是什麼就是resultList =地圖(如> 0:這樣做,否則:爲此,listOfNumbers)

我該怎麼辦呢?

回答

7

使用lambdadocs)函數。我使用了佔位符函數foo()bar(),您必須用您的「執行此操作」/「執行此操作」位代替。

resultList = map(lambda x: foo(x) if x > 0 else bar(x), listOfNumbers) 

的替代,其如@hop理所當然地說是在Python中優選的方法,是使用一個列表解析。這甚至不需要使用lambda函數。

resultList = [foo(x) if x > 0 else bar(x) for x in listOfNumbers) 
+1

列表理解或生成器表達式現在是可取的 – hop 2010-12-04 17:04:27

+0

@hop你是對的,編輯它,謝謝。 – marcog 2010-12-04 17:35:34

3
resultList = [foo(x) if x > 0 else bar(x) for x in listOfNumbers] 
4

答案很簡單:不要這一點。

真的。對那些在你之後必須閱讀代碼的人友好。寫在幾行,如下所示:

def choose_value(x): 
    if x > 0: 
    return blah(x) 
    return minor(x) 

results = map(choose_value, list_of_numbers) 

這對我的口味更具可讀性和可重用性。