• 三元表达,匿名函数


    # 上节课复习
    # 迭代器:迭代就是一个充分的过程。每一次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初始值
    # l=['a','b','c']
    # n=o
    # while n <len(1):
    # print(l[n])
    # n+=1
    #
    # 为什么要有迭代器:对于,字符串,列表,元组,我们可以使用索引的方式取出其中包含的元素,都是对于字典,集合,文件等类型是没有
    # 索引的,
    # 什么是可迭代对象?
    # 可迭代对象指的是内置有__iter__方法的对象,即obj._iter__
    # 'hello'.__iter__
    # 可迭代对象执行obj.__iter__()得到的结果就是迭代器对象
    # 而迭代器对象指的是即内置有__iter__又内置有__next__方法的对象
    # open('a.txt').__iter__()
    # 4、注意:
    # 迭代器对象一定是可迭代对象,而可迭代对象不一定是迭代器对象
    #
    # 什么是迭代器对象?
    # 可迭代的对象执行__iter__方法得到返回值就是迭代器对象。
    # dic={'x':1,'y'=:2,'z':3}
    # iter_dic=dic._iter_()
    # print(iter_dic,__name__())
    #
    # l='hello'
    # l=[1,2,3]
    # iter_l=l.__iter__()
    # while True:
    # print(iter_l.__iter__())
    # except.StopIteration
    # break
    #
    # 迭代器的优点
    # (1)提供了一种不依赖于索引的取值方法
    # (2)迭代器更加节省内存
    # 缺点:取值只能一个个取,只能往后取,并且是一次性的无法用len获取长度
    #
    # 二,生成器:
    # 函数内包含有yield关键字
    # 在调用函数代码,拿到返回值就是一个生成器对象
    #
    # def chicken():
    # print('---->>')
    # yield
    # print('=====>')
    # yield
    #
    # obj=chicken()
    # res=obj.__next__()
    # print(res)
    # res2=obj.__next__()
    # print(res2)
    # for iten in obj:
    # print(iten)
    # 1,面向过程的编程思想
    # 核心过程2字,过程即解决问题的步骤,
    # 即先干什么,在干什么
    # 总结:
    # 优点:复制的问题流程化,进而简单化
    # 缺点:扩展性差,修改一个阶段,其他阶段可能要修改
    # 应用于扩展性要求低的场景
    #
    # 新知识


    三元表达式


    # def max(x,y):
    # if x>y:
    # return x
    # else:
    # return y
    # 转为三元
    # res=x if x>y y
    # 三元表达式仅应用于用于:
    # 条件成立返回一个值
    # 条件不成立 返回值一个值
    #
    def max2(x,y):
    return x if x>y else y
    print(max2(11,10))

    # 函数递归:函数的递归调用,即在函数调用的过程中,又直接式间接地调用了函数本身
    def foo():
    print('from foo')
    foo()
    def foo():
    print('from foo')
    bar()
    foo()
    死循环,不可以优化

    递归分为两个阶段
    1: 回溯
    注意:一定要在满足某种条件回溯,否则的无限递归

    2:递推
    age(5)=age(4)+2
    age(4)=age(3)+2
    age(3)=age(2)+2
    age(2)=age(1)+2
    age(1)=18
    age(n)=age(n-1)+2
    age(n)=18

    def age(n):
    if n==1:
    return 18
    return age(n-1)+2
    age(5)
    总结:1,递归一定要有一个明确结束条件
    2,递归每进入下一次递归,问题的规模都应该减少
    3,在python中没有尾递归优化

    items=[1,[2,[3,[4,[5]]]]]
    # def tell(l):
    # for item in l:
    # if type(item)is not list:
    # print(item)
    # else:
    # tell(item)
    # tell(items)

    三,匿名函数

    (lambda强调:匿名即没有名字,给匿名函数赋给一个名字是没有意义的
    2,匿名函数的参数规则,作用域关系与有名函数是一样的)
    3,匿名函数的函数体整体通常应该是一个表达式,该表达式必须要有一个返回值
    def func(x,y,z):
    return x+y+z
    lambda x,y,z:x+y+z

    salaries={
    'egon':3000,
    'alex':10000000,
    'wupeiqi':10000,
    'yuanhao':2000
    }

    求工资最高那个人是?
    def get(k):
    return salaries[k]
    print(max(salaries,key=lambda x:salaries[x]))
    求工资最低那个人
    print(min(salaries,key=lambda x:salaries[x]))
    把薪资字典按照薪资的高低排序
    nums=[1,11,9]
    nums=sorted(nums)
    print(nums)
    默认按照字典的键排序
    salaries=sorted(salaries,key=lambda x:salaries[x])#默认是升序排
    salaries=sorted(salaries,key=lambda x:salaries[x],reverse=True)#降序
    print(salaries)


    #lambday与map,reduce(印射),filter
    nums=[1,2,3,4,5]
    res=map(lambda x:x**2,nums)
    print(list(res))

    nums=['alex','wxx','yghfh','dfshgg']
    res=map(lambda x:x+'_nb' if x =='egon' else x+'_sb',nums)
    print(list(res))

    reduce:合并
    reduce(lambda x,y:x+y,range(1,101),0)
    print(res)
    res=reduce(lambda x,y:x+' '+y+' ',1)

    filter()除去不要的值 (为真的值)
    # nam=['alex_sb','wxx_sb','egon']
    # res=filter(lambda x:x.endswith('sb'),nam)
    # print(list(res))

    ages=[18,19,10,23,99,30]
    res=filter(lambda n:n>=30,age)
    print(list(res))
    print(abs(-1))
    print(all(1,'a',True))
    print(all(''))
    print(any([0,'',None,False]))
    print('any([])')
    print(bin(11))
    print(oct(11))
    print(hex(11))

    print(bool(0))

    res='你好啊egon'.encode('utf-8')
    res=bytes('你好啊egon',encoding='utf-8')
    print(res)

    def func():
    pass
    print(callable('aaaa'.strip()))
    print(chr(90))
    print(ord('z'))

  • 相关阅读:
    什么是内存碎片
    java堆内存模型
    java内存模型
    java垃圾回收过程
    找出给定的一个字符串中最长的不重复子串,不重复子串即一个子串中不出现两个相同的字符
    学习tomcat(八)
    学习Redis(二)
    学习k8s(四)
    学习docker(三)
    学习MySql(一)
  • 原文地址:https://www.cnblogs.com/maojiang/p/8698748.html
Copyright © 2020-2023  润新知