• python 三元表达式的 列表推导式 生成器推导式


    python中三元表达式的语法如下 ===if else 

    result = x if condition else y

    另外一种三元表达式,比较少见

    result = (x, y)[condition]

     列表推导式  ==〉循环

     python中列表推导式用于使用其他列表创建一个新列表。

    其基本形式为: [表达式 for 变量 in 列表]

    list_1_10 = [x**2 for x in range(1,11)]
    print(list_1_10)

    列表推导式结合三元表达式

    example2 = [[1,2,3],[4,5,6],[7,8,9],[10]]
    exmaple5 = [j**2 for i in example2 if len(i)>1 for j in i if j%2 == 0]
    print(exmaple5)

     生成器推导式

    Python生成器推导式:
    生成器推导式(generator expression)的用法与列表推导式非常相似,在形式上生成器推导式使用圆括号(parentheses)作为定界符,而不是列表推导式所使用的方括号(square
    brackets)。
    与列表推导式最大的不同是,生成器推导式的结果是一个生成器对象。生成器对象类似于迭代器对象,具有惰性求值的特点,只在需要时生成新元素,比列表推导式具有更高的效率,空间占用非常少,尤其适合大数据处理的场合。
    使用生成器对象的元素时,可以根据需要将其转化为列表或元组,也可以使用生成器对象的next()方法或者内置函数next()进行遍历,或者直接使用for循环来遍历其中的元素。但是不管用哪种方法访问其元素,只能从前往后正向访问每个元素,没有任何方法可以再次访问已访问过的元素,也不支持使用下标访问其中的元素。当所有元素访问结束以后,如果需要重新访问其中的元素,必须重新创建该生成器对象,enumerate、filter、map、zip等其他迭代器对象也具有同样的特点。

    g = (i for i in range(199))
    print(g.__next__())
    print(g.__next__())
    print(g.__next__())
    print(g.__next__())
    print(g.__next__())
    print(g.__next__())
    print(g.__next__())

    举例:

    字典推导式

    >>> s = {x:x.strip() for x in ('  he  ', 'she    ', '    I')}    #输出形式形如:x+:+strip处理过后的x
    >>> s
    {'  he  ': 'he', 'she    ': 'she', '    I': 'I'}
    >>> for k, v in s.items():
     print(k, ':', v)
      he   : he
    she     : she
        I : I
    #Python strip() 方法用于移除字符串头尾指定的字符(默认为空格)。str.strip('0')的意思即使删除str字符串首尾出现的字符‘0’

    字典推动式通过{key:value+表达式}的方式生成一个字典
    >>> {i:str(i) for i in range(1, 5)}
    {1: '1', 2: '2', 3: '3', 4: '4'}    #由range对象i和i转化成的字符串组成的字典


    >>> x = ['A', 'B', 'C', 'D']
    >>> y = ['a', 'b', 'b', 'd']
    >>> {i:j for i,j in zip(x,y)}    #通过zip对象+两个字符型列表组成字典
    {'A': 'a', 'B': 'b', 'C': 'b', 'D': 'd'}

    Python 中,使用集合推导式可以借助列表、元组、字典、集合以及 range 区间,快速生成符合需求的集合。

    集合推导式的语法格式和字典推导式完全相同,如下所示:

    { 表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] }

    其中,用 [] 括起来的部分,可以使用,也可以省略。

    有读者可能会问,集合推导式和字典推导式的格式完全相同,那么给定一个类似的推导式,如何判断是哪种推导式呢?最简单直接的方式,就是根据表达式进行判断,如果表达式以键值对(key:value)的形式,则证明此推导式是字典推导式;反之,则是集合推导式。

    【例 1】

    setnew = {i**2 for i in range(3)}
    print(setnew)
    运行结果为:

    {0, 1, 4}
    【例 2】既然生成的是集合,那么其保存的元素必须是唯一的。

    tupledemo = (1,1,2,3,4,5,6,6)
    setnew = {x**2 for x in tupledemo if x%2==0}
    print(setnew)
    运行结果为:

    {16, 4, 36}
    【例 3】

    dictdemo = {'1':1,'2':2,'3':3}
    setnew = {x for x in dictdemo.keys()}
    print(setnew)
    运行结果为:

    {'2', '1', '3'}
     

  • 相关阅读:
    Jquery
    day87-Django创建程序步骤,路由系统和项目执行
    day86-Django安装、cmd控制台操作
    day85-Django初识-自己开发的web框架
    day84-bootstrap
    day83-pymysql操作mysql,pycharm安装pymysql的方法(驱动)
    day82-jQuery-事件、动画、each、data、插件
    day81-jQuery-文档操作
    day80-jQuery-属性操作
    day79-jQuery-文本操作
  • 原文地址:https://www.cnblogs.com/vincent-sh/p/12687198.html
Copyright © 2020-2023  润新知