zoukankan      html  css  js  c++  java
  • 列表推导list(x * x for x in range(10))

    语法分解:[程序最终执行的语句(变量x)  for 变量x in range(n) 条件语句(if)或for 变量x in range(n)]
           执行顺序:1.先执行中间的for语句
                2.再执行最后面的条件语句或者嵌套for语句中的for
                3.最后执行程序最终要达到目的的语句
    ------------------------------------------------------------------------------------- 等价于:
    for 变量x in range(n): if 条件 : 程序最终执行的语句

    列表推导是一种从其他列表创建列表的方式,类似于数学中的集合推导列表推导的工作原理非常简单,有点类似于for循环。

    >>> [x * x for x in range(10)]
    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

    这个列表由range(10)内每个值的平方组成,非常简单吧?如果只想打印那些能被3整除的平方值,该如何办呢?可使用求模运算符:如果y能被3整除,y % 3将返回0(请注意,仅当x能被3整除时,x*x才能被3整除)。为实现这种功能,可在列表推导中添加一条if语句。

    >>> [x*x for x in range(10) if x % 3 == 0]
    [0, 9, 36, 81]
    '''
      语法分解:[程序最终执行的语句(变量x) for 变量x in range(n) 条件语句(if)或for 变量x in range(n)]
           执行顺序:1.先执行中间的for语句
                2.再执行最后面的条件语句或者嵌套for语句中的for
                3.最后执行程序最终要达到目的的语句
    '''

    还可添加更多的for部分。

    >>> [(x, y) for x in range(3) for y in range(3)]
    [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

    按照上面程序的执行步骤我们可以改写验证:

    >>> for x in range(3):
    ...            for y in range(3):
    ...                    (x,y)
    ...
    (0,0)
    (0,1)
    (0,2)
    (1,0)
    (1,1)
    (1,2)
    (2,0)
    (2,1)
    (2,2)

    很明显咱们的验证是对的。它们最原始的样子应该是这个样子的,它们会返回一组组元组数据,它们输出的时候是零散的,所以我们要把它们收集起来,我们可以把它们装入列表。操作方法可以是直接在列表[]里面写这个代码,还有一种便是使用list()创建一个列表。如下:

    >>> list_number = list((x,y) for x in range(3) for y in range(3))
    >>> list_number
    [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
  • 相关阅读:
    airflow 安装问题
    ACM-单词接龙
    ACM-AK吧!少年
    ACM-Alice and Bob
    ACM-Satellite Photographs
    ACM-Subset sum
    ACM-Special Array
    数据挖掘-回归分析
    数据库原理-数据库系统的结构
    数据库原理-几种数据模型
  • 原文地址:https://www.cnblogs.com/iBoundary/p/11241045.html
Copyright © 2011-2022 走看看