zoukankan      html  css  js  c++  java
  • 三元表达式 ,递归。

    一  三元表达式:

    name=input('姓名>>: ')
    res='SB' if name == 'alex' else 'NB'
    print(res)
    如果输入的为‘alex’,那么输出为‘SB’,否则输入其他任何值输出都为为‘NB’。
    那么三元表达式的,其实是一个if判断语句。
    def max(x,y):
    if x>y:
    return x
    else:
    return y


    二 列表生成式:
    egg_list=[]
    方式一:for i in range(10):
        egg_list.append('鸡蛋%s' %i)
    
    方式二:egg_list=['鸡蛋%s' %i for i in range(10)]
    print(egg_list)
    输出为鸡蛋加上数字,为一个列表。
    首先定义一个空列表,然后往列表里面加元素,在for循环下。

    格式1:
    [变量(加工过的变量) for 变量 in 可迭代对象]

       格式2:

       [变量(加工过的变量) for 变量 in 可迭代对象 if(判断条件)]

     三  递归:

    函数的递归调用,在函数调用过程中,直接或间接的调用函数本身。

    直接引用:
    def foo(): print() foo() foo() 调用foo()函数就会一直在foo()函数里面执行,这本身是没有意义的。

    间接引用:
    def foo():
    print()
    bar()
    def bar():
    print()
    foo()
    调用:foo()会去执行foo函数,间接调用bar(),然后再通过bar()调用foo()

    递归的应用:

    def age(n):
         if n=='1':
              return 18return age(n-1)+2
    age(5)
    这个就是递归的应用,当我们想要拿到age(5),必须通过age(4)+2,以此类推,先回溯到age(1)。

    列表嵌套列表:
    def search(l):
    for item in l:
    if type(item) is not list:
    print(item)
    else:
    search(item)

    search([1,[2,[3,[4,[5,[6,[7]]]]]]])

    递归分为两个部分:回溯和递推:

    回溯的过程一定要满足某种条件下结束回溯,否则就会无限循环。

    对于递归的总结:

    1 递归一定要有一个明确的结束条件。

    2 每进入下一次的递归,问题的规模都应该减少。

    四  匿名函数:

    1 匿名函数顾名思义就是没有函数名:lambda x,n:x**n。

    2 也就是说:匿名函数与有名函数参数规则及作用域关系其实是一样的。

    3 lambda 后冒号的函数体,一般为一个表达式,且该表达式必须为由返回值。

     那么对于lambda的应用:max,min,sort.

    names={1,2,3,4,5,}
    salaries={name:'egon',pwd:'123'}
    对于
           
    max(salaries,key=匿名函数)
    res=max(salaries,key=lambda key:salaries[key])
    print(list(res))
    res=min(salaries,key=lambda key:salaries[key])
    print(list(res))
    list=['feng','zheng','alex','egon']
    sort() 用法
    map()
    ruduce()
    filter()
    nums=[1,2,3,4,4,78,5,3]

    映射
    res=map(lambda x:x**2,nums)
    将x转化成x**2输出。
    reduce合并
    res=reduce(lambda x,y:x+y,range(1,101),初始值)
    filter筛选:只留下结果为True的
    res=filter(lambda x:x.endswith('sb'),names)
    或者:res=filter(lambda x: x>5,nums)
    也就是说只留下满足条件的。

    内置函数:

     bytes() :那么我们之前转换bytes一般用encode,现在可以直接用bytes(23344)

    ord()与chr():那么ord()是将一个字符放到括号中,转化成数字。而chr与ord想反。

    ,divmod(),:那么divmode(x,y)将x%y所得的结果以及余数(a,b)

    res=abs(-0.22)
    print(res)#输入一个数字不管是小数还是整数都回返回他的绝对值
    res=all([])
    print(res)#如果()为可迭代对象那么就为真。
    res=any([])
    print(res)#对于()内部的可迭代对象,如果都为True则返回真,否则返回为false.
    # 
    res=bytes('dff',encoding='utf-8')
    print(type(res))#将其他形式转化成bytes通过encode
    res=chr(65)
    print(res)#将数字转化成字母
    ord('r')#将字母转化成对应的数字,根据assci
    divmod(10,3)
    print(divmod(10,3))#输出的为除数和余数。
    for x,y in enumerate(['a','s','r']):
         print(x,y)#为可迭代的对象加上索引。
    结果为(
    0 a
    1 s
    2 r)
    赛选
    l=[1,2,3,4,3,3,5,6,67,]
    res=filter(lambda x:x>5 ,l)
    print(list(res))
    起到赛选作用,将满足条件的赛选出
    names = ['alex', 'wupeiqi', 'egon']
    res=map(lambda x:x+'_nb' if x=='egon'else x+'_db',names)
    print(list(res))
    # 
    min与max
    names = ['alex', 'wupeiqi', 'egon']
    res=max(names,key=lambda name:len(name))
    print(res)
    # 
    合并
    from functools import reduce#使用reduce要先调用。
    res=reduce(lambda x,y:x+' '+y+' ',names,)#reduce 里面有三个参数,匿名函数,变量名,初始值
    print(res)
    salaries={'a':11,'c':2,'e':4}
    sorted(salaries)按照key
    salari=sorted(salaries,key=lambda  x:salaries[x],reverse=True)
    View Code




  • 相关阅读:
    小账本软件设计之数据库设计模式构建
    基于JMeter的Quick Easy FTP Server性能测试
    构建之法 -源代码管理
    小账本APP——软件项目风险管理及解决办法案例
    基于python的Splash基本使用和负载均衡配置
    MQ初窥门径【面试必看的Kafka和RocketMQ存储区别】
    Apollo源码搭建调试看一文就够
    log4j2异步日志解读(二)AsyncLogger
    Disruptor源码解读
    高性能队列disruptor为什么这么快?
  • 原文地址:https://www.cnblogs.com/zhangsanfeng/p/8689917.html
Copyright © 2011-2022 走看看