zoukankan      html  css  js  c++  java
  • python之三元表达式、列表生成式、字典表达式、生成器表达式

    1.三元表达式

        格式为:条件成立时的返回值 if 条件 else 条件不成立时的返回值

                    

            总结:多行判断,一行代码解决。就是一条if判断的简写代码语法

    2.列表生成式    方括号【】

               快速生成一个列表,也是一条简写代码语法

                格式: l=[item**2 for item in range(1,11)]

                            print (l)

                         names=['alex,'wxx','lxx']

                        names=[name+'sb' for name in names]     #循环列表并在每个字符串后加sb

                        print (names)

                        # names=[name+'SB' for name in names if name != 'egon']   #还可以结合if判断
                        # print(names)

    3.字典表达式:  花括号{}

                    s1='hello'

                    l1=[1,2]

                        res=zip(s1,l1)    #res迭代器对象          zip把s1和l11 对应压缩  (拉链式)  配对取出对应的值 多出的就不用了

                        print(list(res))               列表都是全部取出   ()      res迭代器不运行,next才执行代码,next一次取一次

                    

                        # keys=['name','age','sex']
                        # values=['egon',18,'male']

                        # d={k:v for k,v in zip(keys,values)}    #字典的压缩压

                        # print(d)

                        

                        通过迭代器对象取值,可以起到节约内存的作用

    4.生成器表达:小括号()

                        

            

                        g=(i for i in range(10))    “”定义为迭代器对象不执行代码,直到next才执行一次代码

                                pirnt (g)         #定义为迭代器对象(内存地址),不占内存,取值的时候在一个个取出

                    print(next(g))   

                    pirnt(next(g))

                    max   #可迭代对象  循环next取值比较大小

                   # nums=[11,22,33,44,55]

                    # print(max(nums))            #循环取值比较大小

                    # with open('a.txt',encoding='utf-8') as f:
                        #     nums=(len(line) for line in f)         定义为生成器 就是迭代器不执行代码,next才执行一次代码,取一次值就少一次

                        #     print(max(nums))                      如果定义为nums=[len(line) for line in f]就不会报错 因为列表会把所有的值列出了

            # print(max(nums))            
            # print(max(nums)   在运行的时候就会报错,因为文件已经关闭

  • 相关阅读:
    论文连接
    MySQL中的datetime与timestamp比较
    查看挂载情况
    insertable = false, updatable = false的使用
    umount: /home: device is busy
    LVM
    erase-credentials配置
    <T> List<T>前面<T>的意思
    Java 内部类 this
    AuthenticationManager, ProviderManager 和 AuthenticationProvider
  • 原文地址:https://www.cnblogs.com/Marcki/p/10111962.html
Copyright © 2011-2022 走看看