zoukankan      html  css  js  c++  java
  • 三元表达式 列表生成式 生成器生成式

    三元表达式

    什么是三元表达式?

    可以将if...else分支语句合并为一行代码

    为什么要使用三元表达式?

    三元表达式是python为我们提供的一种简化代码的解决方案

    怎么用三元表达式?

    res = 条件成立返回的值 if 判断条件 else 条件不成立返回的值

    应用场景

    #不使用三元表达式方法
    def max2(x, y):
        if x > y:
            return x
        else:
            return y
    
    
    res = max2(1, 2)
    print(res)
    #结果为
    2
    
    
    #使用三元表达式时
    x = 1
    y = 2
    res = x if x > y else y
    print(res)
    #结果为
    2
    
    # 需求: 让用户输入用户名,输入的用户如果不是bing缀添加_DSB
    username = input('请输入你的用户名:')
    res = username if username == 'bing' else username + '_DSB'
    print(res)
    

    列表生成式

    什么是列表生成式?

    可以一行实现生成列表。

    为什么要使用列表生成式?

    列表生成式是python为我们提供的一种简化代码的解决方案 , 用来快速生成列表

    怎么用列表生成式?

    语法:

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

    for的右边是循环次数,并且可以取出可迭代对象中每一个值# for的左边可以为当前列表添加值

    应用场景

    #不使用列表生成式
    egg_list = []
    for i in range(10):
        egg_list.append('鸡蛋%s' % i)
    
    print(egg_list)
    #结果为
    ['鸡蛋0', '鸡蛋1', '鸡蛋2', '鸡蛋3', '鸡蛋4', '鸡蛋5', '鸡蛋6', '鸡蛋7', '鸡蛋8', '鸡蛋9']
    
    #使用列表生成式
    egg_list = ['鸡蛋%s'%i for i in range(10)]
    print(egg_list)
    #结果为
    ['鸡蛋0', '鸡蛋1', '鸡蛋2', '鸡蛋3', '鸡蛋4', '鸡蛋5', '鸡蛋6', '鸡蛋7', '鸡蛋8', '鸡蛋9']
    

    生成器表达式(生成式)

    创建一个生成器对象有两种方式,一种是调用带yield关键字的函数,另一种就是生成器表达式,与列表生成的语法格式相同,只需将[]换成()

    语法:

    () ---> 返回生成器

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

    生成器表达式与列表生成器的对比
    #1.对比列表生成式返回的是一个列表,生成器表达式返回的是一个生成器对象
    list = [x*x for x in range(3)]
    print(list)
    g = (x*x for x in range(3))
    print(g)
    #结果为
    [0, 1, 4]
    <generator object <genexpr> at 0x000001E821B321C8>
    #对比列表生成式,生成器表达式的优点自然是节省内存(一次只产生一个值在内存中)
    
    #总结:列表生成式与生成器表达式优缺点以及应用场景
    #列表生成式
    #优点:因为其返回的是一个列表,所以可以依赖索引取值
    #缺点:占用内存空间大(一次性将所有值读入内存),容易造成资源浪费
    #生成器表达式
    #优点:占用内存空间小,节省资源(一次只取一个值)
    #缺点:去某个特定的值不方便
    
    
  • 相关阅读:
    10.19
    10.17
    张钊的作业
    张钊的第十一份作业
    张钊的第十份作业
    张昭的第九次作业
    张钊的第八份作业
    张钊的第七份作业
    张钊的第六次作业啊
    张钊O的第五次作业
  • 原文地址:https://www.cnblogs.com/a736659557/p/11892382.html
Copyright © 2011-2022 走看看