精华内容
下载资源
问答
  • 列表推导

    2019-09-26 03:13:08
    列表推导 [i*2 for i in range(10) if i%2==0] 中括号——>表示列表解析 [i*2 for i in "abcd"] 大括号——>表示集合解析 {i*2 for i in "abcd"} 大括号、里面的元素是key:value模式,表示字典解析 {k:...

    列表推导

    [i*2 for i in range(10) if i%2==0]

     

    中括号——>表示列表解析    [i*2 for i in "abcd"]

    大括号——>表示集合解析    {i*2 for i in "abcd"}

    大括号、里面的元素是key:value模式,表示字典解析

    {k:v for (k,v) in zip(["name","age"],["xiaoming",19])}

     

    小括号——>表示生成器表达式 

    转载于:https://www.cnblogs.com/crystal1126/p/10471009.html

    展开全文
  • Python列表推导

    万次阅读 多人点赞 2019-05-18 00:51:24
    Python列表推导列表推导式是Python构建列表(list)的一种快捷方式,可以使用简洁的代码就创建出一个列表. 一、range()函数 python的range()函数可用来创建一个整数列表,一般用在 for 循环中. range()语法:...

    Python列表推导式

    列表推导式是Python构建列表(list)的一种快捷方式,可以使用简洁的代码就创建出一个列表.

    一、range()函数

    python的range()函数可用来创建一个整数列表,一般用在 for 循环中.

    range()语法:range(start, stop[, step])

    start: 计数从start开始,默认是从0开始(闭区间),如:range(5)等价于range(0,5).

    stop: 计数到stop结束,但不包括stop(开区间).如:range(0,5)是[0, 1, 2, 3, 4],不包含5.

    step:步长,相邻两个值的差值,默认为1.如:range(0,5)相当于range(0, 5, 1).

    为什么要在列表推导式前讲range(),因为列表推导式是通过一个可迭代对象来生成列表的,range()可以说是列表推导式中最常用的可迭代对象了.对列表推导式来说,range()是其中的精髓之一.没有range(),列表推导式的可读性和简洁性将会大打折扣.

    二、列表推导式

    列表推导式(list comprehension)是指循环创建列表.

    for循环有非常广的应用场景,也可以用来创建一个列表,而列表推导式就相当于for循环创建列表的简化版.

    # for循环
    list_a = list()
    for a in range(5):
        list_a.append(a)
    print(list_a)
    # 列表推导式
    list_b = [b for b in range(5)]
    print(list_b)

    上面分别是用for循环和列表推导式创建列表的代码,list_a和list_b的结果是一样的,都是[0, 1, 2, 3, 4].

    下面来看复杂点的列表推导式:

    # in后面跟其他可迭代对象,如字符串
    list_c = [7 * c for c in "python"]
    print(list_c)
    
    # 带if条件语句的列表推导式
    list_d = [d for d in range(6) if d % 2 != 0]
    print(list_d)
    
    # 多个for循环
    list_e = [(e, f * f) for e in range(3) for f in range(5, 15, 5)]
    print(list_e)
    
    # 嵌套列表推导式,多个并列条件
    list_g = [[x for x in range(g - 3, g)] for g in range(22) if g % 3 == 0 and g != 0]
    print(list_g)

    运行结果:

    ['ppppppp', 'yyyyyyy', 'ttttttt', 'hhhhhhh', 'ooooooo', 'nnnnnnn']
    [1, 3, 5]
    [(0, 25), (0, 100), (1, 25), (1, 100), (2, 25), (2, 100)]
    [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11], [12, 13, 14], [15, 16, 17], [18, 19, 20]]

    代码解释:

    1.列表推导式会遍历后面的可迭代对象,然后按照for前的表达式进行运算,生成最终的列表.

    2.如果有if条件语句,for遍历后紧跟着进行条件判断.

    3.如果有多个for循环,则最终的数据数量为多个for循环的笛卡尔积.

    4.可以进行嵌套的列表推导,与嵌套for循环的原理相同.

    三、代码可读性

    对于不熟悉列表推导式的人来说,可以使用for循环来实现相同的功能,但是需要好几行代码,而列表推导式只需要一行代码.

    很多人会说代码简洁了但可读性降低了,其实不然,当我们对列表推导式熟悉(自己写几次就熟悉了),代码的功能一眼就能轻松地看出来,但是for循环代码基本不可能一眼看完.尤其当创建列表的for循环嵌套在业务逻辑的其他for循环里时,恰恰是使用列表推导式的可读性最高.

    同时,在Python3中列表推导式有自己的局部作用域,就像函数似的.表达式内部的变量和赋值只在局部起作用,表达式的上下文里的同名变量还可以被正常引用,局部变量并不会影响到它们.

    也就是说,列表推导不会有变量泄漏的问题,在列表推导中的赋值操作不可能会影响到列表推导上下文中的同名变量.

    当然,也不是所有场景都推荐使用列表推导式.比如说:如果列表推导的代码超过了两行,就要考虑改成用for循环了.超过了两行的列表推导式就真的没有可读性了.通常的原则是,只用列表推导来创建新的列表,并且尽量保持简短.

    四、字典推导式

    自Python2.7以来,列表推导概念就移植到了字典上,从而有了字典推导(后面还会看到集合推导).

    如果列表推导的概念已经为你所熟知,接受字典推导并不难.直接看代码吧:

    # 因为key是唯一的,所以最后value都是1
    dict_a = {key: value for key in 'python' for value in range(2)}
    print(dict_a)
    
    # 可以根据键来构造值
    dict_b = {key: key * key for key in range(6)}
    print(dict_b)
    
    # 遍历一个有键值关系的可迭代对象
    list_phone = [('HUAWEI', '华为'), ('MI', '小米'), ('OPPO', 'OPPO'), ('VIVO', 'VIVO')]
    dict_c = {key: value for key, value in list_phone}
    print(dict_c)

    运行结果:

    {'p': 1, 'y': 1, 't': 1, 'h': 1, 'o': 1, 'n': 1}
    {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
    {'HUAWEI': '华为', 'MI': '小米', 'OPPO': 'OPPO', 'VIVO': 'VIVO'}

    五、集合推导式

    Python2.7不仅带来了字典推导式,还带来了集合推导式.

    同样的,我们直接看代码,这样可以直观的看到集合推导式.

    # 遍历一个可迭代对象生成集合
    set_a = {value for value in '有人云淡风轻,有人负重前行'}
    print(set_a)
    

    运行结果:

    {'负', '有', '人', '轻', '前', '云', '重', ',', '淡', '风', '行'}

    集合是无序且不重复的,所以会自动去掉重复的元素,并且每次运行显示的顺序不一样.

    从上面的代码中可以总结:

    集合推导式就是将列表推导式的[]换成{},字典推导式就是推导出两个值并构建成键值对的样子.

    另外,不管是字典推导式还是集合推导式,后面都可以像列表推导式一样接if条件语句,嵌套循环等,具体可以根据您自己的需求来使用.


    关注工重号可以领资料和学习交流。

     

    展开全文
  • 列表推导式2.字典推导式3.集合推导式4.嵌套列表推导式注意: 字典和集合推导是最近才加入到Python的(Python 2.7 和Python 3.1以上版). 下面简要介绍下: 第一:列表推导式  列表推导式也叫列表解析式。 功能:是...

    推导式是Python中很强大的、很受欢迎的特性,具有语言简洁,简化代码,速度快等优点。推导式包括:
    1.列表推导式
    2.字典推导式
    3.集合推导式
    4.嵌套列表推导式
    注意: 字典和集合推导是最近才加入到Python的(Python 2.7 和Python 3.1以上版). 下面简要介绍下:

     

    第一:列表推导式

      列表推导式也叫列表解析式。
      功能:是提供一种方便的列表创建方法,只用一条简洁的表达式即可对得到的元素进行转换变形,所以,列表解析式返回的是一个列表
      格式:用中括号括起来,中间用for语句,后面跟if语句用作判读,满足条件的传到for语句前面用作构建先的列表

      其基本格式如下:

        [expr for value in collection ifcondition]
    

      过滤条件可有可无,取决于实际应用,只留下表达式;相当于下面这段for循环:   

      result = []  
      for value in collection:  
          if condition:  
              result.append(expression)  
    

      例1:  过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母   

      >>> names = ['Bob','Tom','alice','Jerry','Wendy','Smith']  
      >>> [name.upper() for name in names if len(name)>3]  
      ['ALICE', 'JERRY', 'WENDY', 'SMITH']  
    

      例2:  求(x,y)其中x是0-5之间的偶数,y是0-5之间的奇数组成的元祖列表

      >>> [(x,y) for x in range(5) if x%2==0 for y in range(5) if y %2==1]  
      [(0, 1), (0, 3), (2, 1), (2, 3), (4, 1), (4, 3)]
    

      例3:  求M中3,6,9组成的列表

      >>> M = [[1,2,3],
      ...      [4,5,6],
      ...      [7,8,9]]
      >>> M  
      [[1, 2, 3], [4, 5, 6], [7, 8, 9]]  
      >>> [row[2] for row in M]  
      [3, 6, 9] 
    
      #或者用下面的方式  
      >>> [M[row][2] for row in (0,1,2)]  
      [3, 6, 9]  
    

      例4:  求M中斜线1,5,9组成的列表 

      >>> M  
      [[1, 2, 3], [4, 5, 6], [7, 8, 9]]  
      >>> [M[i][i] for i in range(len(M))]  
      [1, 5, 9]  

      例5:  求M,N中矩阵和元素的乘积

      >>> M = [[1,2,3],  
      ...      [4,5,6],  
      ...      [7,8,9]]  
      >>> N = [[2,2,2],  
      ...      [3,3,3],  
      ...      [4,4,4]]  
        >>> [M[row][col]*N[row][col] for row in range(3) for col in range(3)]  
      [2, 4, 6, 12, 15, 18, 28, 32, 36]  
      >>> [[M[row][col]*N[row][col] for col in range(3)] for row in range(3)]  
      [[2, 4, 6], [12, 15, 18], [28, 32, 36]]  
      >>> [[M[row][col]*N[row][col] for row in range(3)] for col in range(3)]  
      [[2, 12, 28], [4, 15, 32], [6, 18, 36]]  

      例5:  讲字典中age键,按照条件赋新值

      

      >>> bob  
      {'pay': 3000, 'job': 'dev', 'age': 42, 'name': 'Bob Smith'}  
      >>> sue  
      {'pay': 4000, 'job': 'hdw', 'age': 45, 'name': 'Sue Jones'}  
      >>> people = [bob, sue]  
      >>> [rec['age']+100 if rec['age'] >= 45 else rec['age'] for rec in people]  # 注意for位置  
      [42, 145]  

     

    第二:字典推导式

      字典和集合推导式是该思想的延续,语法差不多,只不过产生的是集合和字典而已。其基本格式如下:

        { key_expr: value_expr for value in collection if condition }

      例1:  用字典推导式以字符串以及其长度建字典

      >>> strings = ['import','is','with','if','file','exception']  
      >>> D = {key: val for val,key in enumerate(strings)}   
      >>> D  
      {'exception': 5, 'is': 1, 'file': 4, 'import': 0, 'with': 2, 'if': 3}  
    

      例2:  大小写key合并

        mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}
        mcase_frequency = {
            k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0)
            for k in mcase.keys()
            if k.lower() in ['a','b']
        }
        print mcase_frequency
        #  Output: {'a': 17, 'b': 34}
    

      例3.快速更换key和value

      mcase = {'a': 10, 'b': 34}
      mcase_frequency = {v: k for k, v in mcase.items()}
      print mcase_frequency
      #  Output: {10: 'a', 34: 'b'}

     

     

    第三:集合推导式

      集合推导式跟列表推导式非常相似,唯一区别在于用{}代替[]。其基本格式如下:

      { expr for value in collection if condition }
    

      例1:  用集合推导建字符串长度的集合

      >>> strings = ['a','is','with','if','file','exception']  
      >>> {len(s) for s in strings}    #有长度相同的会只留一个,这在实际上也非常有用  
      set([1, 2, 4, 9])  
    

    第四:嵌套列表推导式

      嵌套列表是指列表中嵌套列表,比如说: 
      >>> L = [[1,2,3],  
               [4,5,6],  
               [7,8,9]]  
    

       例1: 一个由男人列表和女人列表组成的嵌套列表,取出姓名中带有两个以上字母e的姓名,组成列表

          names = [['Tom','Billy','Jefferson','Andrew','Wesley','Steven','Joe'],  
                   ['Alice','Jill','Ana','Wendy','Jennifer','Sherry','Eva']]  
    

      用for循环实现:

      tmp = []  
      for lst in names:  
          for name in lst:  
              if name.count('e') >= 2:  
                  tmp.append(name)  
      
      print tmp  
      #输出结果  
      >>>   
      ['Jefferson', 'Wesley', 'Steven', 'Jennifer']  
    

      用嵌套列表实现:

      >>> names = [['Tom','Billy','Jefferson','Andrew','Wesley','Steven','Joe'],  
               ['Alice','Jill','Ana','Wendy','Jennifer','Sherry','Eva']]   
      >>> [name for lst in names for name in lst if name.count('e')>=2]  #注意遍历顺序,这是实现的关键  
      ['Jefferson', 'Wesley', 'Steven', 'Jennifer']  
    

      

    本文链接:http://www.cnblogs.com/xuchunlin/p/6059707.html  

    转载于:https://www.cnblogs.com/xuchunlin/p/6059707.html

    展开全文
  • 在本教程中,我们将学习使用 Python 列表推导。Python 列表推导列表推导式是一种基于现有列表创建列表的语法结构。 列表推导式为创建列表提供了一种简洁的方法。 常见的要求是创建新列表,其中每个元素是应用于另...

    在本教程中,我们将学习使用 Python 列表推导。

    Python 列表推导式

    列表推导式是一种基于现有列表创建列表的语法结构。 列表推导式为创建列表提供了一种简洁的方法。 常见的要求是创建新列表,其中每个元素是应用于另一序列的每个成员或可迭代的某些操作的结果,或者创建满足特定条件的那些元素的子序列。

    Python 列表推导式用法

    列表推导可用于:

    转换列表

    筛选列表

    列表推导式的语法受集合的数学符号的影响。 Python 语法受 Haskell 编程语言启发。

    这是用于创建一组整数值的数学符号。

    上面的伪代码显示了列表推导式的语法。 它由三部分组成:for 循环,可选条件和表达式。 for 循环遍历整个序列。 对于每个循环,如果满足条件,则对表达式进行求值。 如果计算出该值,它将被添加到新列表中。 for 循环和 if 条件可以有多个。

    Python 列表推导式转换列表

    下面的示例借助列表推导式将一个列表转换为另一个列表。

    multiply_elements.py

    在第一个示例中,我们通过将每个元素乘以 2 从现有列表中创建一个新列表。

    将a列表中的每个元素乘以 2,并将结果添加到新的b列表中。

    每个元素都乘以 2。

    从摄氏计算华氏温度

    我们有摄氏温度的列表。 我们要创建一个新的温度表,以华氏温度表示。

    fahrenheit_celsius.py

    该示例创建了一个新的华氏温度列表,该列表是根据摄氏温度列表计算得出的。

    计算是在 Python 列表推导的第三个表达式部分中完成的。

    这是示例的输出。

    Python 列表推导式过滤列表

    在下面的示例中,我们将使用列表推导式来过滤列表。

    filter_positive.py

    我们有一个整数列表。 我们创建一个仅包含正整数的新列表。

    为了只包含正数,我们使用了if条件,该条件应用于每个元素。 仅当满足条件的元素才包含在新列表中。

    这是示例的输出。

    下一个示例按元素类型过滤元素。

    filter_by_type.py

    我们有一个元素列表,它们是整数和字符串。 我们创建两个新列表; 一个只有整数,只有一个字符串。

    在这里,我们创建一个列表b,它将仅包含整数值。 type()功能用于确定元素的类型。

    这是示例的输出。

    Python 列表推导式多个if条件

    Python 列表推导中的条件可以使用多个。

    multiple_conditions.py

    我们从列表a创建一个新的整数列表,它们大于 10 且小于 20。

    在此列表推导式中,我们使用两个 if 条件。

    这是示例的输出。

    Python 列表推导式多个for循环

    Python 列表推导中可能有多个for循环。

    multiple_for_loops.py

    该示例创建两个列表的笛卡尔乘积。

    两个 for 循环用于创建笛卡尔乘积。

    这是示例的输出。

    下一个示例显示如何展平 Python 列表。

    flatten_list.py

    nums列表是嵌套列表的列表。 我们用列表推导式来使列表扁平化。

    第一个循环遍历外部列表。 第二个 for 循环遍历嵌套列表。

    这是示例的输出。

    Python 嵌套列表推导式

    Python 列表推导式中的初始表达式可以是另一个列表推导式。

    nested_list_comprehension.py

    该示例定义一个矩阵,列表推导从原始矩阵创建一个转置矩阵。

    这是示例的输出。

    Eratosthenes

    Eratosthenes 的筛子是一种古老的计算素数的算法。 质数(或素数)是大于 1 的自然数,除 1 及其本身外没有除数。 该算法将每个素数的倍数从 2 的倍数开始迭代标记为复合(即不是素数)。

    sieve_of_eratosthenes.py

    该示例计算的质数最大为 100。

    首先,我们创建一个不是素数的数字列表。

    质数就是这些没有包含在no_primes列表中的数字。

    这是输出。

    在本教程中,我们介绍了 Python 列表推导。

    展开全文
  • 本节我们看一下列表推导式、集合推导式、字典推导式,你可能好奇是否有元组推导式,当你试图写一个元组推导式的时候其实结果是一个生成器,生成器可以参考python实现生成器。1、列表推导式[表达式 for ...
  • 列表推导式提供了一个更简单的创建列表的方法。常见的用法是把某种操作应用于序列或可迭代对象的每个元素上,然后使用其结果来创建列表,或者通过满足某些特定条件元素来创建子序列。例如,假设我们想创建一个平方...
  • 介绍列表推导是python中迭代协议的一个有趣且使用的例子,通常而言列表推导可以用for循环完全替代,但是列表推导显而易见只需要更少的代码,并且在大部分情况下比for循环运行速度更快,这是因为列表推导的迭代在解释...
  • 共有三种推导,在Python2和3中都有支持:列表(list)推导式字典(dict)推导式集合(set)推导式简介列表推导是一种表达for-loop的python方式,该代码以单行代码附加到列表。[i for i in range(10) if i % 2 =...
  • 列表推导

    2021-02-23 10:55:29
    学习列表推导式的目的:快速生成一个列表 列表推导式就是使用一行代码结合for循环快速生成一个列表 列表推导式的语法格式: [添加临时变量保存的数据到列表 for 临时变量 in 容器类型数据] # 需求: 利用列表推导...
  • 一、列表推导式 Python官网列表推导式部分 列表推导式提供了一种创建list的简便方法。应用程序创建列表时,列表中的元素来源于其他序列、可迭代对象或创建的一个满足一定条件的序列。 基本格式: ​[表达式 for ...
  • python使用列表推导式的方法:1、用于使用其他列表创建一个新列表;2、可以对原列表进行变换和筛选;3、对多重嵌套的list进行变换筛选。python使用列表推导式的方法:python中列表推导式用于使用其他列表创建一个新...
  • 主要介绍了Python推导式,结合简单实例形式分析了Python列表推导式、字典推导式与集合推导式基本使用方法,需要的朋友可以参考下
  • 【Python学习之路】列表推导

    万次阅读 2019-12-15 20:56:12
    列表推导式 循环可以用来生成列表: values = [10, 21, 4, 7, 12] squares = [] for x in values: squares.append(x**2) print squares [100, 441, 16, 49, 144] 列表推导式可以使用更简单的方法来创建这个列表:...
  • python中的列表推导

    2021-01-20 02:43:08
    列表推导式是什么? 类似于这样[x for x in range(101)],[x for x in range(10) if x % 2==0],[x*y for x in range(10) for y in range(10)]式子,就叫做列表推导列表推导式的好处就是能快速生成列表 列表推导式的...
  • 乍一看到列表推导式你可能会感到疑惑。它们是一种创建和使用列表的简洁方式。理解列表推导式是有用的,因为你可能在其他人的代码里看到列表推导式。下面来了解下列表推导式吧。数字列表的推导式回顾上节知识,我们...
  • 使用列表推导式可以快速生成一个列表,或者根据某个列表生成满足指定需求的列表。列表推导式通常由以下几种常用的语法格式。1.生成指定范围的数值列表:list=[Expression for var in range]:list:新生成的列表名称...
  • 乍一看到列表推导式你可能会感到疑惑。它们是一种创建和使用列表的简洁方式。理解列表推导式是有用的,因为你可能在其他人的代码里看到列表推导式。下面来了解下列表推导式吧。数字列表的推导式回顾之前学过的知识,...
  • 乍一看到列表推导式你可能会感到疑惑。它们是一种创建和使用列表的简洁方式。理解列表推导式是有用的,因为你可能在其他人的代码里看到列表推导式。下面来了解下列表推导式吧。数字列表的推导式回顾之前学过的知识,...
  • 一、列表推导式????简介:列表推导式(list comprehension)是利用其它列表创建新列表的一种方式,工作原理类似for循环,即可对得到的元素进行转换或者筛选。1.1、列表推导式的基本格式:变量名=[表达式 for 变量 in ...
  • 本文实例讲述了Python列表推导式、字典推导式与集合推导式用法。分享给大家供大家参考,具体如下: 推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据...
  • python使用列表推导式的方法:1、用于使用其他列表创建一个新列表;2、可以对原列表进行变换和筛选;3、对多重嵌套的list进行变换筛选。python使用列表推导式的方法:python中列表推导式用于使用其他列表创建一个新...
  • python基础——列表推导式1 列表推导式定义列表推导式能非常简洁的构造一个新列表:只用一条简洁的表达式即可对得到的元素进行转换变形2 列表推导式语法基本格式如下:[expr for value in collection ifcondition]...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,894
精华内容 3,157
关键字:

列表推导