zoukankan      html  css  js  c++  java
  • 第十五章 函数————函数的递归、生成器send 、匿名函数

    1.生成器send方法

    send的工作原理

    1.send发生信息给当前停止的yield

    2.再去调用__next__()方法,生成器接着往下指向,返回下一个yield值并停止

    例:

    persons=['张三', '李四', '王五', '赵六', '钱七']

    def order(persons):

      for i  in ragne(len(persongs)):

        if  i==0:

          print('%s在面试' % persons[0])

        else:

          print('%s叫%s在面试' % (name, persons[i]))

        print('%s面试完毕' % persons[i])

        name = yield persons [i]

    obj = order(persons)

    for i in range(len(persons)):

      if i == 0:
         p = obj.__next__()
      else
    :
        p = obj.send(p)
    print('=============================')

        

    2.函数的递归

    递归:

    函数直接或间接调用本身,都称之为递归

    回溯:找寻答案的过程

    递推:推出答案的过程

    前提条件:

    1.递归必须有出口

    2.递归回溯地推的条件一定有规律

    例:

    def get_age(count):

      if  count ==1

        return  58

      age = get_age(count -1)-2

      return age

    age = get_age(3)

    print(age)

    例:

    def  jiecheng(n):

      if n==1 or n ==0

        return 1

      j = n *jiecheng(n-1)

      return j

    res = jiecheng (5)

    print (res)

    3.匿名函数

     def fn (*args,**kwargs):

      函数体

         return'返回'

    匿名函数:

    1.匿名函数没有函数名

    2.匿名函数的关键字采用 lambda

    3.关键字 lambda 与标识函数功能体 之间一定是参数,所以省略()

    4.匿名函数是没有函数体,只有返回值,所以函数体和返回值的return关键字都省略了

    lambda *args,**kwargs:  'f返回值'

    注意:

    1.参数的使用和有名函数一样,六种形参都支持

    2.返回值必需明确成一个值,可以为单个值对象,也可以为一个容器对象

    a = lambda *args,**kwargs:'返回值1','返回值2'

    print(a)

    (<function <lambda> at 0x0000022D0B7E88C8>, '返回值2')

    返回值1

    print(a[0]())

     正确返回两个值: 主动构成成容器类型
    lambda *args, **kwargs: ('返回值1', '返回值2')

    4.max结合匿名函数工作原理

     1.max内部会遍历iter,将遍历结果一一传给lambda的参数x
     2.依据lambda的返回值作为比较条件,得到最大条件下的那个遍历值
     3.对外返回最大的遍历值
    max(iter, lambda x: x)


     min工作原理一样,得到的是最小值

    5.常用的内置函数

    map(lambda x: x * 2, [3, 1, 2]) # 将遍历结果映射为任意类型值 [6, 2, 4]

    from functools import reduce
    reduce(lambda x, y: x * y, [3, 1, 2]) # 6

    sorted(iter, fn, reverse)
    dic = {
      'owen': (1, 88888),
      'zero': (2, 66666),
      'tom': (3, 77777),
    }
    res = sorted(dic, key=lambda k: dic[k][1])
    print(res) # ['zero', 'tom', 'owen']

    res = sorted(dic, key=lambda k: dic[k][1], reverse=True)
    print(res) # ['owen', 'tom', 'zero']

     1.与类型相关的
     list() str() ord() chr() bool() int() ...

    print(ord('A'))
    print(chr(97))

     2.进制转化
    print(bin(10)) # 1010
    print(oct(10)) # 12
    print(hex(10)) # a

    print(0b1111) # 15
    print(0o10) # 8
    print(0x11) # 17


     3.常用操作类的
     range() len() iter() next() enumerate() id() type() print() input() open()

     4.原义字符串
    print(r'a b')
    print(ascii('a b'))
    print(repr('a b'))


     5.数学相关运算
     abs() sum() max() min() pow() sorted()
    print(abs(-1))
    print(pow(2, 3)) # 2**3
    print(pow(2, 3, 3)) # 2**3%3

  • 相关阅读:
    Sum Root to Leaf Numbers
    Sum Root to Leaf Numbers
    Sort Colors
    Partition List
    Binary Tree Inorder Traversal
    Binary Tree Postorder Traversal
    Remove Duplicates from Sorted List II
    Remove Duplicates from Sorted List
    Search a 2D Matrix
    leetcode221
  • 原文地址:https://www.cnblogs.com/sry622/p/10796480.html
Copyright © 2011-2022 走看看