我只是在测试 map() 函数以了解它,但遇到了问题。我只是想将numbers
零到二之间的所有数字乘以三:
numbers = [1,2,3,4]
test = map(lambda x: x * 3 for x in range(3), numbers)
print test
我可能遗漏了一些明显的东西,它是什么?谢谢。
map()
为您理解 - 无需添加另一个(实际上您不能,正如您已经看到的那样)。
正确的语法是:
map(lambda x: x * 3, numbers)
这相当于:
[x * 3 for x in numbers]
它应该是:
test = map(lambda x:x*3, numbers)
问题是,map 有两个参数——要映射的函数,以及函数将被映射的可迭代对象。在这种情况下,您的 lambda 是您的函数,并且numbers
是您的可迭代对象。请注意,在 Python 中,您通常会[x*3 for x in numbers]
使用列表或(x*3 for x in numbers)
生成器(惰性 eval)
您正在混合两种不同的方式来执行此操作:
使用列表推导
[x*3 for x in range(3)]
使用 map 和 lambda 表达式
map(lambda x:x*3, range(3))