一.三元表达式

  三元运算符:就是if...else...的语法糖但是只支持只有一条if...else...语句的判断

  原:

    cmd = input('cmd:')

    if cmd.isdigit():

      print('可转化为数字')

    else:

      print('不可转化为数字')

  三元表达式简化:

    cmd = input('cmd:')

    print('可转化为数字') if cmd.isdigit() else print('不可转化为数字')

  案例:得到两数大值

    a = 20

    b = 40

    res = a if a > b else b

    print(res)

二.推导式

  列表(元组)与字典的转换语法糖 

    列表推导式:

    dic = {'a': 1, 'b': 2, 'c': 3}

    res = [(k,v) for k , v in dic.items()]

    print(res)

    # [('a', 1), ('b', 2), ('c', 3)]

    字典推导式:

    ls = [('a', 1), ('b', 2), ('c', 3)]

    res = {k:v for k,v in ls}

    print(res)

    # {'a': 1, 'b': 2, 'c': 3}

    案例:

      range(10)推导为列表:

      res_ls = [arg for arg in range(10)]

      print(res_ls)

      迭代出可解压的单列容器可以推导出字典

      res_dic = {v:k for k,v in enumerate('abd')}

      print(res_dic)

三.递归

  递归的定义:

    递归:回溯与递推

    回溯:询问答案的过程

    递推:推出答案的过程

  递归前提:

    回溯到一个有具体结果的值,才能开始递推

    回溯与递推的条件要有一定规律

  递归的本质:

    函数的自我调用(自己调用自己)

  递归深度:

    递归不是无限的系统默认的递归次数为:1000

    可以通过sys模块手动设置,查询递归深度

      sys.setrecursionlimit(100) # 手动设置递归深度

      sys.getrecursionlimit() # 查询递归深度

  递归的两种方式:

    自己调用自己:

    count = 0

    def a():

      global count

      count += 1

      if count > 50:

        return

      a()

    a()

    函数间接调用自己:一旦形成循环调用,就产生了递归

    def b():

      c()

    def c():

      d()

    def d():

      b()

    b()

    案例: 

      询问第一个人年龄,回溯条件 小两岁,第五个人说出自己的年龄,推导出第一个人年龄
      条件:下一个人的年龄比这个人年纪大两岁
      def get_age(num): # 得到年龄
        if num == 1:
          return 58
        age = get_age(num - 1) - 2
        return age
      res = get_age(5)
      print(res)

      阶乘
      5! = 5 * 4! 4! = 4 * 3! ... 2! = 2 * 1
      def factorial(num):
        if num == 1:
          return 1
        temp = num * factorial(num - 1)
        return temp
      res = factorial(5)
      print(res)

四.匿名函数

  匿名函数:没有函数名,没有函数体,只有一个返回值

  关键字:lambda | 参数列表省略() |返回值return关键字也被省略

    f = lambda x,y: (x+y,x-y)

  应用场景:

    1.匿名函数函数地址可以被一个变量接收,该变量就可以作为函数名来使用,但就违背了匿名初衷

    2.结合内置函数来使用:内置函数某些参数需要一个函数地址

      可以赋值一个有名函数名,也可以直接赋值匿名函数

      案例:

      ls = [100, 200, 50, 10]
      res = max(ls, key=fn)
      print('------------------------')
      print(res)

      res1 = max(ls, key=lambda ele: ele)
      print(res1)

  

  

    

        

        

DAY14 函数(三)的更多相关文章

  1. javascript基础程序(算出一个数的平方值、算出一个数的阶乘、输出!- !- !- !- !- -! -! -! -! -! 、函数三个数中的最大数)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. python函数知识六 内置函数二、匿名函数与内置函数三(重要)

    19.内置函数二 abs():绝对值 lst = [1,2,-3,1,2,-5] print([abs(i) for i in lst]) enumerate("可迭代对象",&q ...

  3. day14函数递归调用

    day14函数递归调用 1.装饰器叠加 def deco1(func1): def wrapper1(*args,**kwargs): print('=====>wrapper1 ') res1 ...

  4. php中的字符串常用函数(三) str_replace() 子字符串替换

    mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] ); 该函数返回一个字 ...

  5. python学习笔记12(函数三): 参数类型、递归、lambda函数

    一.函数参数的类型 之前我们接触到的那种函数参数定义和传递方式叫做位置参数,即参数是通过位置进行匹配的,从左到右,依次进行匹配,这个对参数的位置和个数都有严格的要求.而在Python中还有一种是通过参 ...

  6. js值类型转换(boolean/String/number),js运算符,if条件,循环结构,函数,三种弹出框

    js值类型转换 number | string | boolean boolean类型转换 num = 0; var b1 = Boolean(num); console.log(b1) 转化为数字类 ...

  7. Ext.Js核心函数( 三)

    ExtJs 核心函数简介 1.ExtJs提供的常用函数2.get.fly.getCmp.getDom.getBody.getDoc3.query函数和select函数4.encode函数和decode ...

  8. Python小白学习之路(十八)—【内置函数三】

    一.对象操作 help() 功能:返回目标对象的帮助信息 举例: print(help(input)) #执行结果 Help on built-in function input in module ...

  9. 一、MySQL中的索引 二、MySQL中的函数 三、MySQL数据库的备份和恢复 四、数据库设计和优化(重点)

    一.MySQL中的索引###<1>索引的概念 索引就是一种数据结构(高效获取数据),在mysql中以文件的方式存在.存储建立了索引列的地址或者指向. 文件 :(以某种数据 结构存放) 存放 ...

随机推荐

  1. JavaScript基础知识(函数)

    函数的基础 函数: 把实现相同功能的代码放到一个函数体中,当想实现这个功能时,直接执行这个函数即可:减少了的冗余:高内聚,低耦合--> 函数的封装: 函数:引用数据类型: var a = 10; ...

  2. Gym 101775A - Chat Group - [简单数学题][2017 EC-Final Problem A]

    题目链接:http://codeforces.com/gym/101775/problem/A It is said that a dormitory with 6 persons has 7 cha ...

  3. Feign 客户端源码解析

    Feign的使用非常简单,增加如下配置之后,便可以使用Feign进行调用.非常简单是不是.主要的工作由Feign框架完成.业务代码只提供了一个Interface, 然后由Feign动态生成代理类来实现 ...

  4. FastJson一些常见方法(API):处理JSON变得好简单

    fastjson是目前java语言中最快的json库,比自称最快的jackson速度要快,第三方独立测试结果说明比gson快大约6倍 JSON帮助类 这个可以做一个实例研究代码,也可以作为一个工具类 ...

  5. 安装mysql服务时提示“找不到msvcp140.dll”

    没有安装VC++2015版运行库导致的(Microsoft Visual C++ 2015 Redistributable),下载地址https://www.microsoft.com/en-us/d ...

  6. 16.3-uC/OS-III同步 (事件标志组实验)

    事件标志组,顾名思义,就是若干个事件标志的组合,代表若干个事件是否发生,通常用于集合两个或两个以上事件的状态 . 1.如果想要使用事件标志组,就必须事先使能事件标志组.消息队列的使能位于“os_cfg ...

  7. git:当本地分支中的代码和develop分支上有很多冲突,希望删掉本地分支,重新建立新的分支,怎么解决?

    git:当本地分支中的代码和develop分支上有很多冲突,希望删掉本地分支,重新建立新的分支,但是git中说你需要先解决当前的冲突,这种情况怎么解决 这种情况可以在代码编辑器中点击commit,然后 ...

  8. java框架之Spring(3)-JDBC模板使用&事务管理

    下面内容使用到的 jar 包下载 JDBC模板使用 入门 1.导包,如要导入 Spring 的基本开发包.数据库驱动包.Spring 提供的 JDBC 模板包,如下: 2.测试: @Test publ ...

  9. 2019.04.13 python基础

    第一节    主要讲python背景  没什么要注意的  了解记住概念就好 python官网  python.org  自带shell  可以运行python代码 在IDLE中怎么运行代码 新建文本  ...

  10. 如果merge分支出现问题,使用git方式查看日志

    Administrator@IT-20161115IKEG MINGW32 ~$ cd e: Administrator@IT-20161115IKEG MINGW32 /e$ ls$RECYCLE. ...