例如,假设我们想创建一个平方列表,像这样

    注意这里创建(或被重写)的名为 的变量在for循环后仍然存在。我们可以计算平方列表的值而不会产生任何副作用

    1. squares = list(map(lambda x: x**2, range(10)))

    上面这种写法更加简洁易读。

    列表推导式的结构是由一对方括号所包含的以下内容:一个表达式,后面跟一个 for 子句,然后是零个或多个 forif 子句。 其结果将是一个新列表,由对表达式依据后面的 forif 子句的内容进行求值计算而得出。 举例来说,以下列表推导式会将两个列表中不相等的元素组合起来:

    1. >>> [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
    2. [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

    注意在上面两个代码片段中, 和 if 的顺序是相同的。

    如果表达式是一个元组(例如上面的 (x, y)),那么就必须加上括号

    1. >>> vec = [-4, -2, 0, 2, 4]
    2. >>> [x*2 for x in vec]
    3. [-8, -4, 0, 4, 8]
    4. >>> # filter the list to exclude negative numbers
    5. >>> [x for x in vec if x >= 0]
    6. >>> # apply a function to all the elements
    7. >>> [abs(x) for x in vec]
    8. [4, 2, 0, 2, 4]
    9. >>> # call a method on each element
    10. >>> freshfruit = [' banana', ' loganberry ', 'passion fruit ']
    11. >>> [weapon.strip() for weapon in freshfruit]
    12. ['banana', 'loganberry', 'passion fruit']
    13. >>> [(x, x**2) for x in range(6)]
    14. >>> # the tuple must be parenthesized, otherwise an error is raised
    15. >>> [x, x**2 for x in range(6)]
    16. File "<stdin>", line 1, in <module>
    17. [x, x**2 for x in range(6)]
    18. ^
    19. SyntaxError: invalid syntax
    20. >>> # flatten a list using a listcomp with two 'for'
    21. >>> vec = [[1,2,3], [4,5,6], [7,8,9]]
    22. >>> [num for elem in vec for num in elem]