zoukankan      html  css  js  c++  java
  • 三元表达式、列表推导式和递归函数的亮点剖析

    1.三元表达式

    三元表达式等同于三目表达式,就是简单的if......else.....控制器的语法糖。

    # 就是if....else的语法糖
    
    cmd = input('cmd:>>>>>')
    if cmd.isdigit():
        print('可以转换为数字')
    else:
        print('不可以装换为数字')
    
    # 前提是只有一条语句
    print('keyi') if cmd.isdigit() else print('no')
    
    # 得到两个数中最大值
    
    a = 30
    b = 20
    res = a if a > b else b
    print(res)
    
    # 三元运算符的结果不一定要和条件有 直接性 关系 按照绣球
    msg = b if a > b else a
    print(msg)
    
    
    def max(a, b):
        res = a if a > b else b
        return res
    
    
    msg = max(12, 5)
    print(msg)

    2.列表(元组)推导式

    列表(元组)推导式,就是列表(元组)和字典类型之间的转换。

    dic = {'a': 1, 'b': 2, 'c': 3}
    
    # 列表、元组和字典之间的转换的语法糖
    res = [(k, v) for k, v in dic.items()]
    print(res)       # 输出结果为:[('a':1),('b':2),('c':3)]
    print('====================================')
    ls = [('a', 1), ('b', 2), ('c', 3)]
    res = {k: v for k, v in ls}
    print(tuple(res))   # 输出结果为: ('a','b','c')
    print('====================================')
    print(res)  # 输出结果为:[('a':1),('b':2),('c':3)]
    print('====================================')
    # 案例
    res = [age for age in range(1, 10)]
    print(res)   # 输出结果为: [1,2,3,4,5,6,7,8,9]
    print('====================================')
    #
    res = {'a': age for age in range(1, 10)}
    print(res)  # 输出结果为: {'a':9}
    print('====================================')
    #
    p = [3, 4, 5, 62, 5, 6, 7]
    res = {k: v for k, v in enumerate(p)}
    print(res) # 输出结果为:(0:3,1:4,2:5,3:63,4:5,5:6,6:7)
    print('====================================')
    #
    l1 = [1, 2, 3, 4, 5, 6]
    res = {res for res in l1}
    print(res) # 输出结果为: [1,2,3,4,5,6]

    3.递归函数

    递归函数:回溯:询问答案的过程

           递推:推出答案的过程

    # 前提:****
    # 回溯到一个有具体的结果的值,开始递推
    # 回溯和递推的条件要有规律
    
    
    # 递归本质就是函数的自我调用
    def a():
        pass
    
    
    def b():
        pass
    
    
    def c():
        pass

    递归案例:

    # 询问第一个人年龄,回溯条件小两岁,第5个人说出自己的年龄
    # 推导出第一个人的年龄
    
    def get_age(num):
        if num == 1:
            return 58
        age = get_age(num - 1) - 2
        return age
    
    
    res = get_age(5)
    print(res)       # 输出结果为: 50
    
    # 递归函数的使用
    # 5! = 5*4!
    # 4! = 4*3!
    def favtorial(num):
        if num == 1:
            return 1
        return num * favtorial(num - 1)
    
    
    res = favtorial(5)
    print(res)      # 输出结果为: 120

    4.匿名函数

    # 匿名函数就是没有名字的函数
    
    def func(x,y,z=1):
        return x+y+z
    
    # 匿名函数的写法,使用lambda关键字
    
    func = lambda x,y,z=1:x+y+z
    
    func(1,2,3)
    
    
    # 既然是匿名函数,如果有名字了那么就没有意思了。

    # 没有函数名,没有函数体的。
    f = lambda x, y: x + y
    print(f)
    print(f(10, 20))

    res = max(10, 20, 30, 50)
    print(res)


    def fn(v):
    print(v)
    return v


    ls = [20, 100, 200, 50]
    res = max(ls, key=fn)
    print(res)
  • 相关阅读:
    题解 [CF891C] Envy
    题解 [BZOJ4710] 分特产
    题解 [BZOJ2159] Crash的文明世界
    题解 [BZOJ4144] Petrol
    #leetcode刷题之路1-两数之和
    week 7 文件操作与模板
    coursera 北京大学 程序设计与算法 专项课程 STL week8 list
    coursera 北京大学 程序设计与算法 专项课程 完美覆盖
    JSTL标签库不起作用的解决方案 .(转)
    javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext解决办法(转)
  • 原文地址:https://www.cnblogs.com/wanglei957/p/10656747.html
Copyright © 2011-2022 走看看