zoukankan      html  css  js  c++  java
  • 三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数

    一、三元表达式

    表达式一  if条件  表达式二

    name=input('姓名>>: ')
    res='SB' if name == 'alex' else 'NB'
    print(res)

    二 生成器表达式

    #2、示例:生一筐鸡蛋变成给你一只老母鸡,用的时候就下蛋,这也是生成器的特性
    >>> chicken=('鸡蛋%s' %i for i in range(5))
    >>> chicken
    <generator object <genexpr> at 0x10143f200>
    >>> next(chicken)
    '鸡蛋0'
    >>> list(chicken) #因chicken可迭代,因而可以转成列表
    ['鸡蛋1', '鸡蛋2', '鸡蛋3', '鸡蛋4',]

    #3、优点:省内存,一次只产生一个值在内存中

    二、递归与二分法

    递归的定义

    #递归调用是函数嵌套调用的一种特殊形式,函数在调用时,直接或间接调用了自身,就是递归调用

    递归调用应该分为两个明确的阶段:递推,回溯

    1、递归调用应该包含两个明确的阶段:回溯,递推
      回溯就是从外向里一层一层递归调用下去,
          回溯阶段必须要有一个明确地结束条件,每进入下一次递归时,问题的规模都应该有所减少(否则,单纯地重复调用自身是毫无意义的)

      递推就是从里向外一层一层结束递归

    2、二分法

    l=[1,2,10,30,33,99,101,200,301,402]

    def search(num,l,start=0,stop=len(l)-1):
      if start <= stop:
          mid=start+(stop-start)//2
          print('start:[%s] stop:[%s] mid:[%s] mid_val:[%s]' %(start,stop,mid,l[mid]))
          if num > l[mid]:
              start=mid+1
          elif num < l[mid]:
              stop=mid-1
          else:
              print('find it',mid)
              return
          search(num,l,start,stop)
      else: #如果stop > start则意味着列表实际上已经全部切完,即切为空
          print('not exists')
          return

    search(301,l)

    3、匿名函数

    匿名就是没有名字
    def func(x,y,z=1):
      return x+y+z
    #有名函数与匿名函数的对比
    有名函数:循环使用,保存了名字,通过名字就可以重复引用函数功能

    匿名函数:一次性使用,随时随时定义

    应用:max,min,sorted,map,reduce,filter
    每天逼着自己写点东西,终有一天会为自己的变化感动的。这是一个潜移默化的过程,每天坚持编编故事,自己不知不觉就会拥有故事人物的特质的。 Explicit is better than implicit.(清楚优于含糊)
  • 相关阅读:
    《课后习题》
    《课后习题---求两点之间的距离》
    《day06---面向对象入门》
    《java作业》
    《选择排序》
    《冒泡排序》
    《java版进制转换》
    《c语言全局变量的用法》
    《递归问题_2》
    C#把动态创建的多个控件中指定控件显示在最上层
  • 原文地址:https://www.cnblogs.com/kylin5201314/p/13509376.html
Copyright © 2011-2022 走看看