在python中的列表中执行实例的特定方法

时间:2013-06-28 16:15:24

标签: python methods

我想知道是否存在类似于map的函数,但是是否适用于实例的方法。为了说清楚,我知道map的作用是:

map( function_name , elements )
# is the same thing as:
[ function_name( element ) for element in elements ]

现在我正在寻找某种map2

map2( elements , method_name )
# doing the same as:
[ element.method_name() for element in elements ]

我试图自己创作:

def map2( elements , method_name ):
    return [ element.method_name() for element in elements ]

但它不起作用,python说:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'method_name' is not defined

即使我确定我正在使用的元素类已经定义了这个方法。

有谁知道我该怎么办?

2 个答案:

答案 0 :(得分:4)

operator.methodcaller()会为您提供一个可用于此的功能。

map(operator.methodcaller('method_name'), sequence)

答案 1 :(得分:1)

您可以使用lambda表达式。例如

a = ["Abc", "ddEEf", "gHI"]
print map(lambda x:x.lower(), a)

您会发现a的所有元素都已变为小写。