[英]Can I use range() in the map() function?
我只是在测试map()函数以了解它,然后遇到了一个问题。 我只是想乘在所有的数字numbers
由三个0和2之间:
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)
(lazy eval)
您正在混合两种不同的方法:
使用列表理解
[x*3 for x in range(3)]
使用地图和Lambda表达式
map(lambda x:x*3, range(3))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.