zoukankan      html  css  js  c++  java
  • python之路-day14-内置函数二、匿名函数、递归

    一、匿名函数

    函数:

    def 函数名(形参):

    函数体(return)

    函数名(实参)

     

    形参:

    1、位置参数

    2、默认参数

    3、动态传参

    *args:动态接收位置参数

    **kwargs:动态接收关键字参数

     

    位置 >  *args  >  默认值 >  **kwargs

     

    实参:

    1、位置参数

    2、关键字参数

    3、混合参数

     

    lambda  参数:返回值

     

    二、sorted 排序

    sorted(Iterable, key ,reverse)

     

    例题:

    lst=[

    {'id':3,'name':'taihei','age':18},
         {'id':1,'name':'alex','age':28},

    {'id':2,'name':'taibai','age':58},

    {'id':4,'name':'henhei','age':38}

    ]

    根据年龄排序:

     

    f = sorted(lst, key = lambda dic :dic[“age”]))   #把列表中的每一个元素传递给lambda. 根据lambda返回值进行排序

     

     

    三、filter 筛选

    filter(function, Iterable)

    例题:

    # lst=[{'id':3,'name':'taihei','age':18},
    #      {'id':1,'name':'alex','age':28},
    #      {'id':2,'name':'taibai','age':58},
    #      {'id':4,'name':'henhei','age':38}]
    #
    # # 筛选年龄大于等于38的人
    # print(list(filter(lambda ren: ren['age']>=38, lst)))

     

    把后面的可迭代对象中的每一个元素交给前面的函数。根据函数返回的 True or False

    来判断是否保留该元素

     

    四、map 映射

    map(function, Iterable)

    # lst = [2, 3, 4 ,5, 6, 7, 1]
    # # 计算列表中的每一项的平方
    #
    # # 映射
    # # 把可迭代对象中的每一个元素拿出来交给前面的函数执行. 保留最后的执行结果
    # m = map(lambda x: x*x, lst)
    # print(list(m))

     

     

    五、递归函数  (自己调自己)

     

    例题:遍历给定目录并打印

     

    import os

    def func(path):

    lst = os.listdir(path)

    for el in lst:

    file_path = os.path.join(path, el)

    if os.path.isdir(file_path)

    print(el)

    func(file_path)

    else:

    print(el)

    func(具体路径)

     

     

    升级:

      

     import os

     def func(path, ceng):

    lst = os.listdir(path)

    for el in lst:

    real_path = os.path.join(path, el)

    if os.path.isdir(real_path):

    print(“ ”*ceng, el ,sep=””)

    func(real_path, ceng + 1)

    else:

    print(“ ”*ceng,el,sep=””)

    func(具体路径)

     

    六、二分法 (递归的应用

     

    1、传统写法(后两种应用递归,但是太占资源,建议用第一种)

    lst = [4, 56, 178, 253, 625, 1475, 2580, 3574, 15963]

     

    输入一个数n,判断n是否在lst 里面

     

    n = int(input(“请输入一个数字n: ”))

    left = 0

    right = len(lst) - 1

    while 1:

    mid = len(left + right) // 2

    if n < lst[mid]:

    right = mid -1

    elif n > lst[mid]:

    left = mid + 1

    else:

    print(“找到了”)

    break

    else:

    print(“没找到”)

    2、3

    # lst = [4, 56, 178, 253, 625, 1475, 2580, 3574, 15963]

    # def binary_search(lst, n, left, right):
    # if left > right:
    # return False
    # mid = (left + right) // 2
    # if n > lst[mid]:
    # left = mid + 1
    # # 当递归有返回值的时候. 需要写return. 否则有可能接收不到返回值
    # return binary_search(lst, n, left, right)
    # elif n < lst[mid]:
    # right = mid - 1
    # return binary_search(lst, n, left, right)
    # else:
    # print("找到了")
    # return True
    #
    #
    # n = int(input("请输入一个数字n:")) # 178
    # ret = binary_search(lst, n, 0, len(lst)-1)
    # print(ret)




    # 切换列表
    # def binary_search(lst, n):
    # if len(lst) == 0:
    # return False
    # left = 0
    # right = len(lst) - 1
    # mid = (left + right) // 2
    # if n > lst[mid]:
    # left = mid + 1
    # # 当递归有返回值的时候. 需要写return. 否则有可能接收不到返回值
    # return binary_search(lst[mid+1:], n)
    # elif n < lst[mid]:
    # right = mid - 1
    # return binary_search(lst[:mid], n)
    # else:
    # print("找到了")
    # return True
    #
    #
    # n = int(input("请输入一个数字n:")) # 178
    # ret = binary_search(lst, n)
    # print(ret)
  • 相关阅读:
    系统重启
    Linux驱动程序开发
    Linux 下实现控制屏幕显示信息和光标的状态
    Linux C 语言 获取系统时间信息
    linux 获取系统屏幕分辨率
    Linux下得到显示屏参数的方法
    Linux如何关闭防火墙和查看防火墙的具体情况
    查看Linux下网卡状态或 是否连接(转)
    ArcGIS Engine中正确释放打开资源
    在ArcEngine下实现图层属性过滤的两种方法
  • 原文地址:https://www.cnblogs.com/alvin-jie/p/9911523.html
Copyright © 2011-2022 走看看