2010-12-04 11 views
1

十分に単純ですが、私はまともな例を見つけることができません。だから私はここに尋ねた!ケース付きのPython map()

基本的に私は何であったか、resultList =マップ(> 0があればこれを行う、他:これ、listOfNumbersを行う)私はそれを行うにはどうすればよい

答えて

7

lambdadocs)機能を使用してください。私はプレースホルダー関数foo()bar()を使用しました。これはあなたの "do this/do"ビットで置き換える必要があります。

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

Pythonで推奨される方法であると正当に言われている代替方法は、リストの理解を使用することです。これはlambda機能の使用を必要としません。

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

リストの理解度やジェネレータの表現は現在好ましいです – hop

+0

@hopあなたは正しいです、ありがとう、それを編集しました。 – marcog

+0

ガイドラインに従う私は答えを受け入れるのに2日間待つ習慣をつくっています。あなたの目の前で、あなたはすぐにポイントが必要です。 :D Cheers – Bolster

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) 

これは、私の好みではるかに読みやすく、再利用可能です。

+3

Aigh。リストの理解は私にとってかなり自明であるようです。 – evadeflow