• Python学习笔记(八)


    Python学习笔记(八):

    1. 复习回顾
    2. 递归函数
    3. 内置函数

    1. 复习回顾

    1. 深浅拷贝

    2. 集合

    应用:

    1. 去重
    2. 关系操作:交集,并集,差集,对称差集
      操作:
    3. 定义
      s1 = set('alvin')
    4. 添加
      s.add()
      s.update()
    5. 删除
      s.remove()
      关系操作:
    6. in , not in
    7. == , !=
    8. 超级,子集
    9. 交集
    10. 并集
    11. 差集
    12. 对称差集

    3. 函数

    1. 特性:代码重用、保持一致性、可扩展性
    2. 函数的定义
    3. 函数的参数:必备参数、关键字参数、默认参数、不定长参数
    4. 函数的返回值
    5. 作用域:LEGB

    4. 补充:高阶函数

    高阶函数是至少满足下列一个条件的函数:

    1. 接受一个或多个函数作为输入
    2. 输出一个函数

    代码示例:

    def f(n):
        return n*n
        
    print(f(4))			# 结果:16
    
    def foo(a,b,func):
        return func(a) + func(b)
    # 函数名可以进行赋值
    # 函数名可以作为参数
    print(foo(1,2,f))	# 结果:5
    

    2. 递归函数

    递归的特性:

    1. 自己调用自己
    2. 有一个结束条件
    3. 递归的效率比较低
    4. 递归可以实现的循环一定可以解决

    代码示例:

    # 阶乘
    def fact(n):
        if n == 1:
            return 1
        else:
            return n*fact(n-1)
    
    print(fact(5))
    
    # 菲波那切数列-后面一个数字等于前面两个数相加
    def fei(n):
        if n == 1:
            return 0
        if n == 2:
            return 1
        else:
            return fei(n-1)+fei(n-2)
    
    print(fei(5))
    

    3. 内置函数

    内置函数

    几个比较重要的内置函数:

    1. filter(function, sequence)

    代码示例:

    str = ['a', 'b','c', 'd']
     
    def fun1(s):
        if s != 'a':
            return s
     
    ret = filter(fun1, str)
    print(list(ret))# ret是一个迭代器对象    
    
    • 对sequence中的item依次执行function(item),将执行结果为True的item做成一个filter object的迭代器返回。可以看作是过滤函数
    1. map(function, sequence)

    代码示例:

    str = [1, 2,'a', 'b']
    
    def fun2(s):
        return s + "alvin"
     
    ret = map(fun2, str)
    print(ret)      #  map object的迭代器
    print(list(ret))#  ['aalvin', 'balvin', 'calvin', 'dalvin']
    
    • 对sequence中的item依次执行function(item),将执行结果组成一个map object迭代器返回.
      map也支持多个sequence,这就要求function也支持相应数量的参数输入:
    ef add(x,y):
        return x+y
    print (list(map(add, range(10), range(10))))##[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
    
    1. reduce(function, sequence, starting_value)  

    代码示例:

    from functools import reduce
     
    def add1(x,y):
        return x + y
     
    print (reduce(add1, range(1, 101)))## 4950 (注:1+2+...+99)
    print (reduce(add1, range(1, 101), 20))## 4970 (注:1+2+...+99+20)
    
    • 对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用
    1. lambda
    #普通函数
    def add(a,b):
        return a + b
    
    print add(2,3)
    
    #匿名函数
    add = lambda a,b : a + b
    print add(2,3)
    
    #========输出===========
    5
    5
    
    • 匿名函数的命名规则,用lamdba 关键字标识,冒号(:)左侧表示函数接收的参数(a,b) ,冒号(:)右侧表示函数的返回值(a+b)。
    • 因为lamdba在创建时不需要命名,所以,叫匿名函数
    以此为趣,乐在其中。
  • 相关阅读:
    21--数据库优化
    20--mysql读写分离,分库分表
    18--mysql主从复制、及架构
    17--数据快速导出、导入,数据库迁移
    16--mysql数据备份
    15--mysql日志管理
    14--mysql锁机制
    13--mysql事务详解,数据库读现象
    etcd原理详解代码剖析
    k8s入坑之路(10)kubernetes coredns详解
  • 原文地址:https://www.cnblogs.com/ryomahan/p/7549873.html
Copyright © 2020-2023  润新知