day13三元表达式,列表生成式,生成器表达式,匿名函数,内置函数

三元表达式:

  • 语法:

    条件成立返回左边的值 if 判断条件 else 条件不成立返回右边的值

    # 需求: 让用户输入用户名,输入的用户如果不是tank,为其后缀添加_DSB
    username = input('请输入用户名:').strip()
    new_username = username if username == 'tank' else username + '_DSB'
    print(new_username)
    

列表生成式:

  • 可以一行实现生成列表。

  • 语法:

    ​ list = [取出的每一个值、任意值 for 可迭代对象中取出的每一个值 in 可迭代对象]

    for的右边是循环次数,并且可以取出可迭代对象中每一个值

    for的左边可以为当前列表添加值

    ​ list = [值 for 可迭代对象中取出的每一个值 in 可迭代对象]

    ​ list = [值 for 可迭代对象中取出的每一个值 in 可迭代对象 if 判断]

    # 列表生成式
    # 普通的
    new_list = []
    for i in range(1, 6):
        new_list.append(i)
    print(new_list)
    
    #列表
    new_list = [i for i in range(1, 6)]
    print(new_list)
    

生成器表达式(生成器生成式)

  • 1.什么是生成器?
    生成的工具,生成器就是自定义的一个迭代器,本质是迭代器

  • 若函数体包含yield关键字,再调用函数,并不会执行函数体代码,得到的额返回值即生成器对象。

  • 列表生成式: 若数据量小时采用

    优点:

    ​ 可以依赖索引取值

    缺点:

    ​ 浪费资源

  • 生成器生成式:若数据量过大时采用

  • (line for line in range(1, 6))--->g生成器(1, 2, 3, 4, 5)

    优点:

    ​ 节省资源

    缺点:

    ​ 取值不方便

    # 生成一个有1000个值的生成器
    g = (line for line in range(1, 1000001))
    # <generator object <genexpr> at 0x00000203262318E0>
    print(g)
    
    # 列表生成式实现
    list1 = [line for line in range(1, 1000001)]
    print(list1)
    
    

匿名函数

  • 无名字的函数

    左边是参数, 右边是返回值

    lambda :
    PS: 原因,因为没有名字,函数的调用 函数名 + ()
    匿名函数需要一次性使用。
    注意: 匿名函数单独使用毫无意义,它必须配合 “内置函数” 一起使用的才有意义

内置函数

  • python内部提供的内置方法

    max , min , sorted , map , filter

    dict1 = {
        'tank': 1000,
        'egon': 500,
        'sean': 200,
        'jason': 500
    }
    print(max(dict1, key=lambda x:dict1[x]))  #max,最大。排序根据ASCII自码表排序的
    
    print(min(dict1,key=lambda x:dict1[x]))# 最小的
    
    new_list = sorted(dict1,key=lambda x: dict1[x],reverse=True)
    print(new_list)
    
posted @ 2019-11-14 20:47  猫-园  阅读(85)  评论(0编辑  收藏  举报