zoukankan      html  css  js  c++  java
  • 列表推导式

    学了python很长时间,我才真正的理解列表推导式。

    作用:根据条件生成列表

    基本语法

    a = [i*i for i in range(3)]
    print(a)

    结果:

    [0,1,4]

    基本原理:Python在执行列表推导式时,会对可迭代对象 L 进行迭代,将每一次迭代的值赋给循环变量 i ,然后收集变量表达式 i*i 的计算结果,最终由这些结果构成了新的列表,也就是列表推导式所返回的值。

    只要支持 for 循环进行迭代的对象,都可以对它使用列表推导式。

    高级用法

    带if语句的

    我们可以在 for 语句后面跟上一个 if 判断语句,用于过滤掉那些不满足条件的结果项。

    例如,一行打印出1~100偶数的列表可以这么写

    a = [ i for i in range (1,100) if i%2==0]
    print(a)

    带有嵌套循环的

    笛卡尔积的生成

    在复杂一点的列表推导式中,可以嵌套有多个 for 语句。按照从左至右的顺序,分别是外层循环到内层循环。

    b = [x+y for y in ["A","B"] for x in ["1","2"]]
    print(b)

    结果:

    ['1A', '2A', '1B', '2B']

    相当于:

    li = []
    for x in ["1","2"]:
        for y in ["A","B"]:
            li.append(x+y)
    print(li)

    既有if语句又有for嵌套循环

    例题:输出0~4之间偶数和奇数的和:

    b = [(i,j)for j in range(5)if j %2==0 for i in range(5) if i%2==0]
    print(b)

    结果:

    [(0, 0), (2, 0), (4, 0), (0, 2), (2, 2), (4, 2), (0, 4), (2, 4), (4, 4)]

    等价于:

    >>> L = []
    >>> for x in range(5):
    ...     if x % 2 == 0:
    ...         for y in range(5):
    ...             if y % 2 == 1:
    ...                 L.append((x, y))
    >>> L
    [(0, 1), (0, 3), (2, 1), (2, 3), (4, 1), (4, 3)]
  • 相关阅读:
    实战:垂直电商如何撬动“女人腰包”
    谈谈项目收尾
    项目管理心得:一个项目经理的个人体会、经验总结
    IT项目经理沟通技巧的重要性
    项目跟踪:项目跟踪要跟踪什么呢?
    会员营销,你真的做到了吗?
    Git入门——基础知识问答
    文摘:威胁建模(STRIDE方法)
    写在2015年工作的第一天
    简化工作——我的bat文件
  • 原文地址:https://www.cnblogs.com/sticker0726/p/10531366.html
Copyright © 2011-2022 走看看