• 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
  • 相关阅读:
    wrap添加及去除外层dom的方法
    闭包作用域探究小例
    测试模型之W模型(脑图)
    软件测试模型之前置模型(脑图)
    软件测试模型之H模型(脑图)
    软件测试基础(脑图)
    测试模型之V模型(脑图)
    一个点型的rsyncd.conf内容
    rsync同步时报name lookup failed for name or service not known错误的解决方法
    ubuntu下的eclipse 3.3初用aptana报SWT错误
  • 原文地址:https://www.cnblogs.com/Knight-huang/p/9912407.html
Copyright © 2020-2023  润新知