zoukankan      html  css  js  c++  java
  • 内置函数⼆

    本节主要内容:

    1. lamda匿名函数

    2. sorted()

    3. filter()

    4. map()

    5. 递归函数

    一. lamda匿名函数   

    为了解决一些简单的需求而设计的一句话函数

    计算n的n次方

    原本写法:

    def func(n): 

       return n**n

    print(func(10))

    read('../oldboy/', 0)

    六. 二分查找   

    二分查找. 每次能够排除掉⼀半的数据.  查找的效率非常⾼高. 但是局限性比较⼤大. 必须是有 序列才可以使⽤二分查找    

    要求: 查找的序列列必须是有序序列列.

    lamda匿名函数的写法:

    f = lambda n: n**n

    print(f(10))

     lambda表示的是匿名函数. 不需要⽤用def来声明, 一句话就可以声明出⼀个函数

    语法:    函数名 = lambda 参数: 返回值

    注意: 1. 函数的参数可以有多个. 多个参数之间⽤逗号隔开

    2. 匿名函数不管多复杂. 只能写⼀⾏, 且逻辑结束后直接返回数据

    3. 返回值和正常的函数⼀样, 可以是任意数据类型

    匿名函数并不是说⼀定没有名字. 这⾥前面的变量量就是⼀个函数名.

    说他是匿名原因是我们通 过__name__查看的时候是没有名字的.

    统⼀都叫lambda. 在调用的时候没有什么特别之处. 像正常的函数调用即可

    ⼆. sorted()

     排序函数.     语法: sorted(Iterable, key=None, reverse=False)

      Iterable: 可迭代对象       

    key: 排序规则(排序函数), 在sorted内部会将可迭代对象中的每⼀个元素传递给这个函数的参数. 根据函数运算的结果进⾏排序       

    reverse: 是否是倒叙. True: 倒叙, False: 正序

    # 根据字符串长度进行排序 
    lst = ["麻花藤", "冈本次郎", "中央情报局", "狐仙"] # 计算字符串串长度
     def func(s):   
     return len(s)
     print(sorted(lst, key=lambda s: len(s)))

    三. filter()

    筛选函数   

    语法: filter(function. Iterable)       

    function: ⽤用来筛选的函数. 在filter中会⾃自动的把iterable中的元素传递给function.

    然后 根据function返回的True或者False来判断是否保留留此项数据       

    Iterable: 可迭代对象

    lst = [{"id":1, "name":'alex', "age":18},       {"id":2, "name":'wusir', "age":16},      
     {"id":3, "name":'taibai', "age":17}]
     fl = filter(lambda e: e['age'] > 16, lst)   # 筛选年年龄⼤大于16的数据 print(list(fl)) 

    四. map()   

    映射函数   

    语法: map(function, iterable) 可以对可迭代对象中的每⼀个元素进行映射. 分别取执行 function   

    计算列表中每个元素的平方 ,返回新列表

    def func(e):   

    return e*e

    mp = map(func, [1, 2, 3, 4, 5])

    print(mp)

    print(list(mp))

     改写成lambda:print(list(map(lambda x: x * x, [1, 2, 3, 4, 5])))

    计算两个列表中相同位置的数据的和

    lst1 = [1, 2, 3, 4, 5]

    lst2 = [2, 4, 6, 8, 10]

    print(list(map(lambda x, y: x+y, lst1, lst2)))

    五. 递归

     在函数中调用函数本身. 就是递归

    def func():   

    print("我是谁")   

      func()

    func()

    在python中递归的深度最⼤到998

    递归的应用:    

    我们可以使用递归来遍历各种树形结构, 比如我们的文件夹系统. 可以使用递归来遍历该 文件夹中的所有文件

    import os def read(filepath, n):    
    files = os.listdir(filepath)    # 获取到当前⽂文件夹中的所有⽂文件   
     for fi in files:    # 遍历⽂文件夹中的⽂文件, 这⾥里里获取的只是本层⽂文件名       
     fi_d = os.path.join(filepath,fi)    # 加⼊入⽂文件夹 获取到⽂文件夹+⽂文件       
     if os.path.isdir(fi_d): # 如果该路路径下的⽂文件是⽂文件夹           
     print("	"*n, fi)           
     read(fi_d, n+1)     # 继续进⾏行行相同的操作       
     else:           
     print("	"*n, fi)   # 递归出口. 最终在这⾥里里隐含着return
    #递归遍历⽬目录下所有⽂文件 
    read('../oldboy/', 0)

    六. 二分查找    二分查找. 每次能够排除掉一半的数据.  查找的效率非常⾼高. 但是局限性比较⼤大. 必须是有 序列才可以使⽤用⼆分查找    

    要求: 查找的序列列必须是有序列.

    # lst = [4, 56, 178, 253, 625, 1475, 2580, 3574, 15963]
    # n = int(input("请输入数字"))
    # left = 0
    # right =len(lst)-1
    # while left<=right:
    # mid = (left+right)//2
    # if n < lst[mid]:
    # right = mid -1
    # elif n > lst[mid]:
    # left = mid +1
    # else:
    # print("找到了")
    # break
    # else:
    # print("找不到数字")
  • 相关阅读:
    【React Native】某个页面禁用物理返回键
    【React Native】DeviceEventEmitter监听通知及带参数传值
    转载【React Native代码】手写验证码倒计时组件
    【React Native】 中设置 APP 名称、应用图标、为安卓添加启动图
    【React Native错误集】* What went wrong: Execution failed for task ':app:installDebug'.
    【React Native错误集】Import fails with "Failed to execute 'ImportScripts' on 'WorkerGlobalScope'"
    【React Native错误集】Android error “Could not get BatchedBridge, make sure your bundle is packaged properly” on start of app
    「React Native笔记」在React的 setState 中操作数组和对象的多种方法(合集)
    【React Native】Error: Attribute application@allowBackup value=(false) from AndroidManifest.xml
    坚果云如何使用二次验证码/谷歌身份验证器/两步验证/虚拟MFA?
  • 原文地址:https://www.cnblogs.com/DanielYang11/p/9911061.html
Copyright © 2011-2022 走看看