繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM