我想知道是否存在类似于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
即使我确定我正在使用的元素类已经定义了这个方法。
有谁知道我该怎么办?
答案 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
的所有元素都已变为小写。