如何在map和lambda函数中使用以下代码?
for i in range(1,11):
print "*" * i
如何使用map和lambda函数实现相同的功能
map(lambda x:print "*"*x ,range(1,11))
答案 0 :(得分:3)
print('\n'.join(map(lambda x: "*"*x, range(1,11))))
答案 1 :(得分:3)
from __future__ import print_function
map(lambda x:print("*"*x) ,range(1,11))
这适用于python 2.7
答案 2 :(得分:0)
为什么不呢?
print '\n'.join([str("*" * i) for i in range(1, 11)])
只需使用列表推导使用换行符将行连接在一起。
给猫皮肤涂抹的方法不止一种。在这种情况下,任何解决方案都可行Python针对列表理解进行了优化。另外,创作者Guido van Rossum,HATES映射,过滤和减少功能......
另外,他不喜欢lambda ...... Case-in-point http://www.python-course.eu/python3_lambda.php
如果编程语言Python的作者Guido van Rossum得到了他的意愿,我们的教程将缺少这一章。在他2005年5月的文章“All Things Pythonic:Python 3000中的reduce()的命运”中,他给出了删除lambda,map(),filter()和reduce()的原因。他期待来自Lisp和计划“伙计”的阻力。他没想到的是这种反对派的僵化。足够了,Guido van Rossum在一年之后写道:“经过多次尝试为lambda提出替代方案,也许我们应该承认失败。我没有时间跟进最近几轮,但我建议那样做我们保留lambda,以便不再浪费每个人的才能和时间来完成一个不可能的任务。“ 我们可以看到结果:lambda,map()和filter()仍然是核心Python的一部分。只有reduce()必须去;它进入了functools模块。
TL; DR - 不要试图使用某种语言,就好像它是另一种语言一样。
答案 3 :(得分:0)
使用
print('\n'.join(map(lambda x: "*"*x, range(1,11))))