def fun(opt,lis,start = 0,end=len(lis)): m_lis = (end-1-start)/2+start if opt >lis[m_lis]: return fun(opt,lis,start = m_lis) elif opt <lis[m_lis]: return fun(opt,lis,start =0,end=m_lis+1) elif opt==lis[m_lis]: return m_lis else: return "sorry none"
l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88] def func(l,aim): mid = (len(l)-1)//2 if l: if aim > l[mid]: func(l[mid+1:],aim) elif aim < l[mid]: func(l[:mid],aim) elif aim == l[mid]: print("bingo",mid) else: print('找不到') func(l,66) func(l,6)
l1 = [1, 2, 4, 5, 7, 9] def two_search(l,aim,start=0,end=None): end = len(l)-1 if end is None else end mid_index = (end - start) // 2 + start if end >= start: if aim > l[mid_index]: return two_search(l,aim,start=mid_index+1,end=end) elif aim < l[mid_index]: return two_search(l,aim,start=start,end=mid_index-1) elif aim == l[mid_index]: return mid_index else: return '没有此值' else: return '没有此值' print(two_search(l1,9))
单例模式(Singleton Pattern)是一种经常使用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你但愿在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。设计模式
好比,某个服务器程序的配置信息存放在一个文件中,客户端经过一个 AppConfig 的类来读取配置文件的信息。若是在程序运行期间,有不少地方都须要使用配置文件的内容,也就是说,不少地方都须要建立 AppConfig 对象的实例,这就致使系统中存在多个 AppConfig 的实例对象,而这样会严重浪费内存资源,尤为是在配置文件内容不少的状况下。事实上,相似 AppConfig 这样的类,咱们但愿在程序运行期间只存在一个实例对象。服务器
在 Python 中,咱们能够用多种方法来实现单例模式spa
单例模式 :对一个类是能实例化一个对象 class A: __instance = None def __new__(cls, *args, **kwargs): if A.__instance is None: # 第一次进入,知足这个条件 obj = object.__new__(cls) # 利用object 建立一个对象空间 给了obj A.__instance = obj # 我将类的私有静态字段 __instance 从新赋值了 对象空间obj return A.__instance a1 = A() b1 = A() c1 = A() print(a1,b1,c1) 获得结果 对象地址都是同样的