一、二分法
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')]