我可以在map()函数中使用range()吗?

时间:2013-10-13 00:21:03

标签: python list map

我只是测试map()函数来了解它,我遇到了一个问题。我只是试图将numbers中的所有数字乘以零到二乘以三:

numbers = [1,2,3,4]

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

print test

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

3 个答案:

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