Python:使用Map / Lambda而不是for循环

时间:2014-09-10 11:19:51

标签: python

如何在map和lambda函数中使用以下代码?

for i in range(1,11):
    print "*" * i

如何使用map和lambda函数实现相同的功能

map(lambda x:print "*"*x ,range(1,11))

4 个答案:

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