一.三元表达式

  三元运算符:就是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)

  

  

    

        

        

最新文章

  1. gitlab多人协作开发
  2. flume整合kafka
  3. vim插件ctags的安装和使用
  4. Android缓存学习入门(二)
  5. sharepoint 2013 未能加载类型"Microsoft.AnalysisServices.SharePoint.Integration.ReportGalleryView"
  6. 关于vs的lib文件和dll文件
  7. HDU 5306 Gorgeous Sequence
  8. 查看oracle版本信息
  9. PHP基础 windows环境下安装Apache Mysql PHP
  10. Head First设计模式之访问者模式
  11. mysql 创建用户
  12. js改变数组的两个元素的位子,互换、置顶
  13. mean
  14. cordova打包vue2(webpack)android、ios app
  15. phpstorm之ssh链接远程Linux服务器
  16. POJ2689 Prime Distance(数论:素数筛选模板)
  17. HDU 2841 Visible Trees(容斥)题解
  18. storage路径问题
  19. gulp 系统教程
  20. PHP安全之register_globals (转)

热门文章

  1. orange---openresty.
  2. 第二周作业-web后台应用开发与xml
  3. 在docker中使用mysql数据库,在局域网访问
  4. 【Python全栈】HTML <!--...--> 注释 、CSS/JS //注释 和 /*.....*/ 注释
  5. 计算机组成原理——主存与cache的映射关系
  6. LaTeX参考文献出现问号
  7. 更新node的版本,node没有安装到c盘,安装到了D盘
  8. java EE(1)
  9. (转)Linux vi 命令大全
  10. python自动类型转换(针对于Number数据类型来的)精度从低到高 bool->int-> float->complex 当两个不同是数据类型运算时候,默认想更高进度转化