def f(x):
return x**2
list(map(f,[x for x in range(3)]))
list
如何自动迭代地图对象?这里到底发生了什么?
由于list
是class
而地图对象是iterator
,所以这意味着每当一个类作用于迭代器时,它总会自动遍历迭代器?
答案 0 :(得分:1)
地图功能实际上是一种强大的速度工具。功能与for循环没有什么不同。
map函数被编写为直接由C代码执行 - 因此使其运行速度比由解释的python代码执行时更快。它适用于任何函数(第一个参数)和可迭代(第二个参数)。
list(map(f,[x for x in range(3)])) # [0, 1, 4]
与..相同。
for x in range(3):
f(x)
您也可以使用lambda表达式。这将产生与您的函数相同的结果,而不声明函数:
list(map(lambda f: (f ** 2), [x for x in range(3)])) # [0, 1, 4]
答案 1 :(得分:0)
list
initializer委托给list.extend()
,如果它是可传递的。
没有。此行为特定于序列类型。