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/

  • 相关阅读:
    JS中数组的sort()排序
    清除浮动方法
    浏览器兼容问题
    前端切图
    设置页面默认为繁体字
    7月计划
    css的层叠和继承
    Flex 布局教程:语法篇
    轮播图淡入淡出的js和jquery的效果
    接口调用async/await
  • 原文地址:https://www.cnblogs.com/weiyinfu/p/9094459.html
Copyright © 2011-2022 走看看