在Python3中列出一个地图对象

时间:2018-05-07 15:41:49

标签: python-3.x list class dictionary

实施例

def f(x):
    return x**2
list(map(f,[x for x in range(3)]))

Q1:

list如何自动迭代地图对象?这里到底发生了什么?

Q2:

由于listclass而地图对象是iterator,所以这意味着每当一个类作用于迭代器时,它总会自动遍历迭代器?

任何人都可以帮助我吗?非常感谢!

2 个答案:

答案 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)

  1. list initializer委托给list.extend(),如果它是可传递的。

  2. 没有。此行为特定于序列类型。