1

我只是在测试 map() 函数以了解它,但遇到了问题。我只是想将numbers零到二之间的所有数字乘以三:

numbers = [1,2,3,4]

test = map(lambda x: x * 3 for x in range(3), numbers)

print test

我可能遗漏了一些明显的东西,它是什么?谢谢。

4

3 回答 3

3

map()为您理解 - 无需添加另一个(实际上您不能,正如您已经看到的那样)。

正确的语法是:

map(lambda x: x * 3, numbers)

这相当于:

[x * 3 for x in numbers]
于 2013-10-13T00:24:44.283 回答
1

它应该是:

test = map(lambda x:x*3, numbers)

问题是,map 有两个参数——要映射的函数,以及函数将被映射的可迭代对象。在这种情况下,您的 lambda 是您的函数,并且numbers是您的可迭代对象。请注意,在 Python 中,您通常会[x*3 for x in numbers]使用列表或(x*3 for x in numbers)生成器(惰性 eval)

于 2013-10-13T00:23:08.160 回答
1

您正在混合两种不同的方式来执行此操作:

使用列表推导

[x*3 for x in range(3)]

使用 map 和 lambda 表达式

map(lambda x:x*3, range(3))
于 2013-10-13T00:24:49.200 回答