我可以在Python中使用类而不是使用map的函数吗?

时间:2013-06-07 14:42:07

标签: python map

根据docmap函数将函数应用于 iterable 的每个项目,并返回结果列表“。我注意到它也适用于类,例如map(MyClass, get_iterable())并返回类实例的列表 这是map的正确用法吗?

5 个答案:

答案 0 :(得分:5)

文档实际上说“将函数应用于每个可迭代项目”,其中 function 是对参数名称的引用。所以是的,map可以与任何可调用的一起使用;并且所有类型都是可调用的(因为它们将创建该类型的对象)。

答案 1 :(得分:3)

map期望可调用。如果一个对象是可调用的,那也是有效的:

class Foo(object):
    def __call__(self, foo):
        return foo

print map(Foo(), [1,2,3])

答案 2 :(得分:2)

试一试:

>>> map(str, [1,2,3])
['1', '2', '3']

文档将function称为参数的名称。它的类型是无关紧要的 - 它应该只能被调用。

答案 3 :(得分:1)

是的,python是duck-typed,所以如果可以在iterable上调用某些东西(比如MyClass构造函数),那么它将不返回任何错误(并且它将是有效的)。

答案 4 :(得分:1)

是。在您的示例中,您实际上是将类的构造函数映射到项列表。