• 匿名函数lambda


    简单的函数不用def定义,用匿名函数lambda就可以搞定:

    f = lambda x: x + 1  
    res = f(1)
    print(res)

    lambda和下面的函数是一个作用

    def f(x):
    return x + 1

    lambda:lambda是一个表达式,函数体比def简单很多,冒号前面是形参,冒号后面是返回值,匿名函数,省的为了起名字而烦恼
    例1:
    s = lambda x, y: x + y
    res = s(1, 2)
    print(res) # 打印出3

    例2:
    res = list(filter(lambda x: x % 2, range(10)))
    print(res) # 打印出[1, 3, 5, 7, 9]

    例3:
    res = list(filter(lambda x: not(x % 3), range(100)))
    print(res) # 打印出100以内3的倍数,也可以用列表生成式来计算,如[y for y in range(1, 101) if y % 3 == 0]

    例4:
    我希望打包的形式是灵活多变的列表而不是元组(希望是[[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]这种形式),你能做到吗?(采用map和lambda表达式)

    res = list(map(lambda x, y: [x, y], [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]))
    print(res)

    也可以通过函数来实现,代码如下:

    def zip_after():
    lis = []
    for k, v in zip([1, 3, 5, 7, 9], [2, 4, 6, 8, 10]):
    res = [k, v]
    lis.append(res)
    print(lis)


    zip_after()

    5、台阶问题/斐波那契
    一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?
    fib = lambda n: n if n <= 2 else fib(n - 1) + fib(n - 2)
    print(fib(3))

    6、变态台阶问题
    一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法?
    fib = lambda n: n if n < 2 else 2 * fib(n - 1)
    print(fib(3))

    7、矩形覆盖
    我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
    第2*n个矩形的覆盖方法等于第2*(n-1)加上第2*(n-2)的方法。
    f = lambda n: 1 if n < 2 else f(n - 1) + f(n - 2)

  • 相关阅读:
    CF 13B Letter A
    CF12D Ball
    题解 CF11C
    CF10E Greedy Change
    CF10D LCIS&&Acwing 272
    CF10C Digital Root
    yLOI2019 青原樱
    js有关时间日期的操作
    js 读取 cookie
    nginx有关.htaccess小结
  • 原文地址:https://www.cnblogs.com/laosun0204/p/11038108.html
Copyright © 2020-2023  润新知