zoukankan      html  css  js  c++  java
  • Python第五天

    一、函数递归
    #函数递归调用:在调用一个函数的过程中直接或间接的调用该函数本身,称之为函数的递归调用
    # import sys
    # print(sys.getrecursionlimit())#查看递归的数目
    # # sys.setrecursionlimit(2000)#更改递归数目
    #
    # n=1
    # def func1():
    # global n
    # print('from func1',n)
    # n+=1
    # func1()
    # # func1()

    #间接调用func
    # def func():
    # print('from func')
    # bar()
    # def bar():
    # func()
    # func()

    #递归分为两个重要阶段:递推+回溯
    # age(5)=age(4)+2
    # age(4)=age(3)+2
    # age(3)=age(2)+2
    # age(2)=age(1)+2
    # age(1)=18
    # n=!1#age(n)=age(n-1)+2
    # n==1#age(n)=18
    # def age(n):
    # if n == 1:
    # return 18
    # return age(n-1)+2
    # print(age(5))
    #总结递归调用:
    #1、进入下一次递归时,问题的规模必须降低
    #2、递归调用必须要有一个明确的结束条件
    #3、在python中没有尾递归优化,递归调用的效率就是不高

    #使用递归的情况:不清楚有多少层的情况下
    # l=[1,2,[3,[4,[5,[6,7,[8,9,[10]]]]]]]
    # def get(l):
    # for item in l:
    # if isinstance(item,list):#判断类型(item是不是list类型),也可以是if type(item) is list
    # get(item)
    # else:
    # print(item)
    # get(l)


    二、二分法
    l=[1,2,10,30,33,99,101,200,301,402]#从小到大排列的数字列表

    def get(num,l):
    if len(l)>0:
    mid=len(l)//2
    # print(l,l[mid])
    if num > l[mid]:
    #in the right
    l=l[mid+1:]#切分列表,只留右边的值
    elif num < l[mid]:
    #in the lift
    l=l[:mid]
    else:
    print('find it')
    return
    get(num,l)
    else:
    print('not find')
    return
    get(400,l)

    三、匿名函数的使用
    # def f1(n):
    # return n**2
    # print(f1)

    #
    # f2=lambda n:n**2 #自带return返回值
    # print(f2)
    # print(f2(3))

    #匿名函数即没有绑定名字的函数,没有绑定名字,意味着只能用一次就会被回收
    #所以说:匿名函数的应用场景就是:某个功能只用一次就结束了
    # salaries={
    # 'egon':3000,
    # 'alex':10000000,
    # 'wupeiqi':10000,
    # 'yuanhao':2000
    #
    # }
    # print(max(salaries))#默认比较的是key
    # print(max(salaries.values()))#取最高的值

    # res=zip(salaries.keys(),salaries.values())
    # print(max(res)[1])


    #补充:序列类型的比较
    # t1=(3333,'a')
    # t2=(2,'a','b','c')
    # print(t1<t2)



    # #拉链函数
    # l1=[1,2,3]
    # s1='hello'
    # res=zip(l1,s1)
    # print(list(res))

    #max与lambda的结合
    # salaries={
    # 'egon':3000,
    # 'alex':10000000,
    # 'wupeiqi':10000,
    # 'yuanhao':2000
    #
    # }
    # def f1(k):
    # return salaries[k]
    # print(max(salaries,key=lambda k:salaries[k]))#取出最高工资人
    # print(min(salaries,key=lambda k:salaries[k]))
    # print(sorted(salaries,key=lambda k:salaries[k]))#从小到大排序


    # map,reduce,filter
    # l=['alex','wupeiqi','yuanhao','xiaoming']
    # print(list(map(lambda x:x+'_SB',l)))

    #求和reduce
    # from functools import reduce
    # print(reduce(lambda x,y:x+y,range(1,101),100))

    #filter过滤
    # l=['alex_SB', 'wupeiqi_SB', 'yuanhao_SB', 'egon']
    # res=filter(lambda name:name.endswith('SB'),l)
    # print(list(res))
    四、内置函数
    #优先掌握
    max
    min
    sorted
    map
    from _functools import reduce
    filter
    sum
    bool

    # print(abs(-1))#取绝对值

    # print(all([1,'a',[]]))#看bool值,里面全部为真才为真
    # print(all([]))

    # print(any([0,None,'',1]))#看bool值,有一个为真结果就为真
    # print(any([]))

    # print(bin(10))#十进制转二进制
    # print(oct(10))#十进制转八进制
    # print(hex(10))#十进制转十六进制

    #布尔值为假:0,None,空
    # bool()

    #把字符串类型转换为bytes类型
    # print('hello'.encode('utf-8'))

    #callable
    # print(callable(max))

    #把数字转化成字母
    # print(chr(65))
    # print(chr(66))
    # print(chr(90))
    #把字符转化成数字
    # print(ord('A'))

    #complex复数
    # x=1-2j#x=complex(1-2j)
    # print(type(x))
    # print(x.real)
    # print(x.imag)


    # dict,int,list,tuple,str,float,set,frozenset
    # s=set({1,2,3})#可变集合
    # s=frozenset({1,2,3})#不可变集合

    #查看模块可以调用那些属性
    # import time
    # print(dir(time))


    # print(divmod(1000,25))#可以用来计算页数

    # l=['a','b','c','d']
    #
    # for x in enumerate(l):
    # print(x)

    #算法,校验字符串,最后给出数值
    # print(hash('abdswvimd'))


    # print(isinstance(1,int))
    # issubclass()

    # print(pow(10,2,3))#10**2%3

    # print(str({'a':1}))

    # l=[1,4,2,9]
    # print(list(reversed(l)))#倒着排序
    #
    # print(round(10.333345,3))#四舍五入

    # #
    # l1=['a','b','c','d','e']
    # l2=['a','b','c','d','e']
    # print(l1[1:5:2])
    # print(l2[1:5:2])
    #
    #
    # obs=slice(1,5,2)
    # print(l1(obs))
    # print(l2(obs))

    # print(sum([1,2,3,4]))#求和
    # print(sum(range(10)))


    # print(vars() is locals())
    # print(locals())


    # m=input('>>:')
    # # print(type(m))
    #
    # # import 'time' #不能导入字符串
    # obj=__import__(m)
    #obj.sleep(3)

    # 了解compile,exec,eval
    #eval可以提取字符串内的表达式执行,然后返回结果
    # s1='1+2+3'
    # print(eval(s1))

    #exec:仅仅只是执行字符串内的表达式或语句,没有返回值
    # s1='1+2+3'
    # print(exec(s1))
    # s2='for i in range(10):print(i)'
    # print(exec(s2))

    五、模块的使用
    #第一部分:import
    #导入模块,只会在第一次导入时执行源文件代码,
    #如果模块已经加载到内存,下一次导入直接引用内存中导入的结果
    # import spam
    # import spam
    # import spam

    # import sys
    # print('spam' in sys.modules)


    #import导入文件都做了哪些事?
    #1、以源文件为准产生一个名称空间
    #2、以刚刚产生的名称空间为准,执行源文件的代码
    #3、会在当前文件中定义一个名字,这个名字就是模块名,用来引用模块中的名字

    # import spam

    # # money=0
    # # def read1():
    # # print('from ----->')
    # # read1()
    # spam.read1()
    # spam.read2()

    # money=1000000
    # # print(money)
    # spam.change()



    #为模块起别名
    # import spam as sm
    # print(sm.money)

    # engine_type='mysql'
    # if engine_type == 'mysql':
    # import mysql as engine
    # elif engine_type == 'oracle':
    # import oracle as engine
    # engine.parse()


    #在一行导入多个模块
    # import spam,time

    #第二部分:from...import...

    #导出模块中部分属性
    # from spam import money,read1,read2,change
    # # # money=1
    # # # print(money)
    # # read1()
    # # read2()
    # change()


    #导出模块中全部属性
    # from spam import *
    # print(money)
    # print(read1)
    # print(read2)
    # print(change)

    # from spam import *#*对应模块spam内的__all__的属性
    # # print(money)
    # print(read2)

    六、模块的搜索路径
    #模块的查找顺序是:内存中已经加载的模块-->内置模块-->sys.path(倒模块的环境变量)路径中包含的模块
    # import time
    # print(time)
    # import sys
    # print(sys.path)

    import sys
    sys.path.append(r'C:UserslingPycharmProjects19期day5a')
    import m



  • 相关阅读:
    第38周星期六小结
    第38周星期日小结
    第39周星期三熟悉java项目第一天小结
    第39周星期一今天开始用扇贝记单词
    第38周星期四电话会议忙碌的一天
    第38周星期二
    第38周星期三熟悉工程环境
    PHP实现图片的等比缩放和Logo水印功能示例
    微信授权登录微信公众号和PC端网站
    PHP实现购物车的思路和源码分析
  • 原文地址:https://www.cnblogs.com/lingmei/p/7715776.html
Copyright © 2011-2022 走看看