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)   在运行的时候就会报错,因为文件已经关闭

posted @ 2018-06-14 14:07  Marcki  阅读(2836)  评论(0编辑  收藏  举报