• 二分法、内置函数


    一、二分法

    list01 = [-1,0,4,7,9,12,26,37,44,54,]
    find_num = 43
    def func(find_num,new_list):
        print(new_list)
        if len(new_list) == 0:  # 
            print('不在搜索范围内')
            return
        mid_index = len(new_list) // 2  # 得到列表中间索引
        if find_num < new_list[mid_index]:
            new_list = new_list[:mid_index]  # 得到列表开头到中间值的新列表
            func(find_num, new_list)  # 重新调用自己
        elif find_num > new_list[mid_index]:
            new_list = new_list[mid_index + 1:]  # 得到列表中间值到末尾的新列表
            func(find_num, new_list)
        else:
            print('find it !')
    
    func(find_num,list01)
    list00=[-1,0,2,6,54,33,90,68]
    list00.sort()  # 有序排列,默认从小到大
    print(list00)
    
    >>>>[-1, 0, 2, 6, 33, 54, 68, 90]

    二、面向过程的编程思想

      核心是“过程”二字,过程即流程,指的是做事的步骤:1XXXX,2XXXXX3.XXXXX

      基于该思想编写程序就好比在设计一条流水线。

      优点:复杂的问题流程化,进而简单化。

      缺点:扩展性非常差

    三、函数式编程

      将计算机的运算视为数学意义上的运算,比起面向过程,函数式更加注重的是执行结果。

     四、内置函数  map   filter  reduce

    l = [1,34,22,67,54,32,72]
    new_l = (val+100 for val in l)
    print(new_l)  # 得到的是一个迭代器
    res = new_l.__next__()
    res1 = new_l.__next__()
    print(res)
    print(res1)
    >><generator object <genexpr> at 0x00000145B37B29E8>
    >>101
    >>134
    
    # map的应用
    res2 = map(lambda val:val+100,l)
    print(res2)
    AAA = res2.__next__()
    BBB = res2.__next__()
    print(AAA)
    print(BBB)
    >><map object at 0x00000145B37BAA58>
    >>101
    >>134
    l = ['asd_aaa','zxc_aaa','gsd','vxc']
    res = filter(lambda name: name.endwith('aaa'),l)
    print(res)
    >><filter object at 0x0000022A4544AA58>
    l = [1,34,22,67,54,32,72]
    from functools import reduce
    res = reduce(lambda x,y:x+y,l,)
    print(res)
    >>282

     五、内置函数

    abs     # 求绝对值

    all      #   被bool循环 ,如果是True 返回True,是Flase,返回Flase

    any      #  被bool循环 只要有一个True就返回True

    ascii    # 返回ASCII对应的字符

    bin    # 返回二进制

    bool    # 判断一个值是True 还是False      bool(0)     >>>>  False

    bytearray    #   把bytes变成bytearray,可修改的数组

    bytes  

    callable    # 判断一个对象是否可调用

    chr      # 返回ASCII码里面对应的字符

    dict      # 生成一个字典

    dir      #  发挥对象可调用的属性

    divmod    #  返回列表的商和余数

    enumerate   # 返回列表的索引和元素

    eval       #  可以把字符串类型的listdict uple,再转换成其原有的数据类型

    exec       #  把字符串的代码,进行解义并执行

    exit      # 退出程序

    filter      # 

    float      #

    frozenset    # 把一个集合变成不可修改的  (冻结)

    global      # 打印全局作用域内的值

    local       #  打印局部变量

    hex      # 十六进制

    oct      # 八进制

    ord      # 返回ASCII码字符对应的十进制数

    iter      # 把一个数据结构变成一个迭代器

    next      #

    max      # 最大值

    min      # 最小值

    round      # 把小数四舍五入

    sum      # 求和

    zip      # 把两个或者多个列表拼成一个

    >>> a=[1,3,4,4]
    >>> b=['as','fsa','da']
    >>> list(zip(a,b))
    [(1, 'as'), (3, 'fsa'), (4, 'da')]
  • 相关阅读:
    TensorFlow设置GPU占用量
    与服务器同步工程(expect脚本)
    C/C++中#pragma once的使用
    sublime text 3 快捷键大全
    Sublime Text 3 注册码
    如何用diff比较两个文件夹下的内容
    Error in building opencv with ffmpeg
    opencv: Rotate image by 90, 180 or 270 degrees
    初识HTTPS
    Unity3D之Mecanim动画系统学习笔记(十一):高级功能应用
  • 原文地址:https://www.cnblogs.com/Holmes-98/p/14304313.html
Copyright © 2020-2023  润新知