根据文档,该map
函数“将函数应用于可迭代的每个项目并返回结果列表”。我注意到它也适用于类,例如map(MyClass, get_iterable())
并返回类实例的列表。
这是正确的用法map
吗?
问问题
114 次
5 回答
5
文档实际上说“将函数应用于每个可迭代项”,其中函数是对参数名称的引用。所以是的,map
可以与任何可调用对象一起使用;并且所有类型都是可调用的(因为它们将创建该类型的对象)。
于 2013-06-07T14:45:00.527 回答
3
map
期望一个可调用的。如果一个对象是可调用的,那也可以:
class Foo(object):
def __call__(self, foo):
return foo
print map(Foo(), [1,2,3])
于 2013-06-07T14:45:19.730 回答
2
试试看:
>>> map(str, [1,2,3])
['1', '2', '3']
文档function
称为参数的名称。它的类型无关紧要 - 它应该只能是可调用的。
于 2013-06-07T14:45:10.563 回答
1
是的。在您的示例中,您实际上是将类的构造函数映射到项目列表。
于 2013-06-07T14:44:48.610 回答
1
是的,python 是鸭子类型的,所以如果可以在可迭代对象上调用某些东西(例如 MyClass 构造函数),那么它将不会返回任何错误(并且它将是有效的)。
于 2013-06-07T14:43:56.687 回答