zoukankan      html  css  js  c++  java
  • 一行Python

    只要理解了函数式编程,使用神奇的Lambda,
    配合列表推导以及复杂一点的判断语句,任何的python 代码都可以转换成一行代码

    1、打印九九乘法表

    # 打印九九乘法表
    print('
    '.join([' '.join(['%s*%s=%-2s' % (y, x, x * y) for y in range(1, x + 1)]) for x in range(1, 10)]))
    

    2、打印质数

    print(*(i for i in range(2, 100) if all(tuple(i % j for j in range(2, int(i ** .5))))))
    

    3、import语句也是可以省略的

    print([(lambda rnd: rnd.choice([1, 2, 3, 10]))(__import__('random'))])
    

    4、画心

    # 画心
    print('
    '.join([
        ''.join([('AndyLove'[(x - y) % 8]
                  if ((x * 0.05) ** 2 + (y * 0.1) ** 2 - 1) ** 3 -
                     (x * 0.05) ** 2 * (y * 0.1) ** 3 <= 0
                  else ' ')
                 for x in range(-30, 30)])
        for y in range(15, -15, -1)]))
    
    

    5、map对象是延迟加载的

    # 不加list是不会打印的,因为map对象是延迟加载的
    list(map(lambda x: print(x), ("hello world",)))
    

    6、打印阶乘

    print((lambda functools: functools.reduce(lambda x, y: x * y, range(5)))(__import__("functools")))
    

    7、实现递归

    #此函数就是真正的业务递归过程,其他结构均是辅助,我们可以提取出来
    job = lambda f:lambda l: 0 if len(l) == 0 else l[0] + f(l[1:])
    
    g = (lambda y: job(lambda x: y(y)(x)))(lambda y: job(lambda x: y(y)(x)))
    
    print(g([1,2,3]))
    

    参考资料

    http://locatino.github.io/2015/08/03/playing-python-lambda/

  • 相关阅读:
    上传文件事件并校验:event.target.files && event.target.files[0]
    深浅拷贝
    Git学习
    Flex弹性布局
    hive
    222
    错误总结
    Redis小结2
    spark小结
    kafka详解
  • 原文地址:https://www.cnblogs.com/weiyinfu/p/9094459.html
Copyright © 2011-2022 走看看