二分法、内置函数

一、二分法

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')]
原文地址:https://www.cnblogs.com/Holmes-98/p/14304313.html