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))

 

posted on 2018-04-08 19:30  麦兜家的狗🐶  阅读(38)  评论(0)    收藏  举报

导航