• day13-14 内置函数


    具体内容参考:http://naotu.baidu.com/file/b337aca025ccb35b746cc872265ec1a7?token=312080d5f0e65fd2

    今日主要内容
    1. 匿名函数
    函数回顾:
    def 函数名(形参):
    函数体(return)

    函数名(实参)

    形参:
    1. 位置参数
    2. 默认值参数
    3. 动态传参
    *args: 动态接收位置参数
    **kwargs: 动态接收关键字参数

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

    实参:
    1. 位置参数
    2. 关键字参数
    3. 混合参数

    lambda 参数: 返回值 (参数可以没有)
       用于解决一些简单的需求, 用一行代码实现
      注意事项:1.函数的参数可以多个,多个参数之间用逗号隔开
           2.不管函数多复杂,只能写一行,且逻辑结束后直接返回数据
           3.返回值和正常函数一样, 可以是任意数据类型

    2. sorted
    排序 将sorted内部可迭代对象的每一个元素传递到key的参数, 根据函数运算的结果排序
    sorted(Iterable, key, reverse)
    3. filter
    筛选 将Iterable可迭代对象的每一个元素传递给function, 根据function返回True或者False判断是否保留此项数据
    filter(function, Iterable)
    4. map
    映射 将Iterable可迭代对象的每一个元素进行映射, 分别去执行function, 保留最后的执行结果
    map(function, Iterable)
    5. 递归
    自己调用自己
      递归深度: python中最大的递归深度是1000 但是你永远到不了1000
        6. 二分法(递归的应用)
    开头
    结尾
    中间
    非递归二分法:
    lst = [4, 56, 178, 253, 625, 1475, 2580, 3574, 15963]
    
    n = int(input("请输入一个数字n:")) # 56
    
    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("没找到")
    View Code

     递归二分法1:

    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)
    View Code

       递归二分法2:(切换列表)

    切换列表
    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)
    View Code
  • 相关阅读:
    论企业家的修养七“善”(转)
    2009中国企业家新春联谊会
    独步红尘
    诗人的悲哀
    我们恋爱吧
    为妈妈祈福
    向总统学习形像包装!【强烈推荐】
    为了你,我开始学着写诗
    亲爱的,我们去私奔吧
    要做最好的自己:“优化”大脑的22条有效方法
  • 原文地址:https://www.cnblogs.com/Knight-huang/p/9912407.html
Copyright © 2020-2023  润新知