带有案例的Python map()

时间:2010-12-04 15:55:25

标签: python functional-programming mapping

很简单,但我找不到一个体面的例子;所以我问这里!

基本上我是什么,resultList = map(如果> 0:执行此操作,否则:执行此操作,listOfNumbers)

我该怎么做?

3 个答案:

答案 0 :(得分: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 :(得分:4)

答案很简单:不要这样做。

真。对那些必须在你之后阅读代码的人友好。把它写成几行,如:

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

results = map(choose_value, list_of_numbers)

根据我的口味,这更具可读性和可重用性。

答案 2 :(得分:3)

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