我只是测试map()函数来了解它,我遇到了一个问题。我只是试图将numbers
中的所有数字乘以零到二乘以三:
numbers = [1,2,3,4]
test = map(lambda x: x * 3 for x in range(3), numbers)
print test
我可能错过了一些明显的东西,它是什么?谢谢。
答案 0 :(得分:3)
map()
为你理解 - 不需要添加另一个(事实上你不能,正如你已经看到的那样)。
正确的语法是:
map(lambda x: x * 3, numbers)
相当于:
[x * 3 for x in numbers]
答案 1 :(得分:1)
应该是:
test = map(lambda x:x*3, numbers)
问题是,map有两个参数 - 要映射的函数,以及函数将映射到的迭代。在这种情况下,lambda是你的函数,numbers
是你的可迭代函数。请注意,在Python中,您通常会为列表执行[x*3 for x in numbers]
或为生成器执行(x*3 for x in numbers)
(lazy eval)
答案 2 :(得分:1)
您正在混合两种不同的方式:
使用列表理解
[x*3 for x in range(3)]
使用map和lambda表达式
map(lambda x:x*3, range(3))