Day15笔记
011 上周内容回顾
max求最大值max(key,iterable)
min求最小值min(key,iterable)
sum 求和。
bool
enumrate 枚举。
filter过滤 filter(func,[1,2,3,4]) 筛选模式
map(func,[1,2,3,4]) 循环模式
abs绝对值
format
zip拉链方法
print
all 全是True
any 有一个。
golbals
locals
int
str
sorted排序,key
reversed 翻转,迭代器。
dir 查看所有的方法。
len() 测量长度,个数。
type()类型。
range 可迭代对象。数字列表
divmod(除数,被除数)-->(商,余数)
open 操作文件。
eval
exec
id
bytes
---------------**********-------------------
1.递归函数
# def func1(): # print(666) # # while True: # func1() # import sys # sys.setrecursionlimit(10000) # def func1(n): # n += 1 # print(n) # func1(n) # # func1(0) # 执行一次开辟一个空间,python对你内存一个保护机制,默认只能递归到998层。 def age(n): if n == 1: return 18 else: return age(n-1) + 2 print(age(4)) # age(3) + 2 age(2) + 2 + 2 18 + 2 + 2 + 2 ''' def age(4): if n == 1: return 18 else: return age(3) + 2 18 + 2 + 2 + 2 def age(3): if n == 1: return 18 else: return age(2) + 2 18 + 2 + 2 def age(2): if n == 1: return 18 else: return age(1) + 2 18 +2 def age(1): if n == 1: return 18 else: return age(0) + 2 '''
2.二分查找法
'''
算法:二分查找,树运算,堆,栈....
'''
前提,有序且唯一的数字数列 # 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] # print(l.index(66)) # count = 0 # for i in l: # if i == 66: # print(count) # break # count += 1 #,1,aim 6 #2,aim与list的中间的数进行比较mid,aim > mid 取mid --end 中间的数与aim在进行比较 #3,aim与list的中间的数进行比较mid,aim < mid 取start --min 中间的数与aim在进行比较 错误例子: # def two_search(li, aim): # mid_index = len(li) // 2 # 3 # if li[mid_index] < aim: # return two_search(li[mid_index+1:],aim) # elif li[mid_index] > aim: # return two_search(li[:mid_index],aim) #([2,3,5],3) # elif li[mid_index] == aim: # return mid_index # else: # return '没有此值' # print(two_search(l,17)) ''' 正确例子 1: aim 15, start:0 end:6 min_index:3 , li[min_index]:10 2: aim 15, start:4 end:6 min_index:5 li[min_index]:33 3, aim 15, start:4 end:4 min_index:4 li[min_index]:15 ''' l = [2, 3, 5, 10, 15, 33, 55] def two_search(li, aim, start=0, end=None): end = len(li) if end is None else end mid_index = (end - start) // 2 + start # 3 if start <= end: if li[mid_index] < aim: return two_search(li, aim, start=mid_index+1, end=end) elif li[mid_index] > aim: return two_search(li, aim, start=start, end=mid_index-1) #([2,3,5],3) elif li[mid_index] == aim: return mid_index else: return '没有此值' else: return '没有此值' print(two_search(l,100))
浙公网安备 33010602011771号