Non-English Resources

Add an event to this calendar.

Add an event to this calendar.

PEP: 202 List Comprehensions b58467baacaa 2008-10-02 12:51:05 +0000 (Thu, 02 Oct 2008) Barry Warsaw Final Standards Track 13-Jul-2000 2.0

Introduction

```    This PEP describes a proposed syntactical extension to Python,
list comprehensions.

```

The Proposed Solution

```    It is proposed to allow conditional construction of list literals
using for and if clauses.  They would nest in the same way for
loops and if statements nest now.

```

Rationale

```    List comprehensions provide a more concise way to create lists in
situations where map() and filter() and/or nested loops would
currently be used.

```

Examples

```    >>> print [i for i in range(10)]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> print [i for i in range(20) if i%2 == 0]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

>>> nums = [1,2,3,4]
>>> fruit = ["Apples", "Peaches", "Pears", "Bananas"]
>>> print [(i,f) for i in nums for f in fruit]
[(1, 'Apples'), (1, 'Peaches'), (1, 'Pears'), (1, 'Bananas'),
(2, 'Apples'), (2, 'Peaches'), (2, 'Pears'), (2, 'Bananas'),
(3, 'Apples'), (3, 'Peaches'), (3, 'Pears'), (3, 'Bananas'),
(4, 'Apples'), (4, 'Peaches'), (4, 'Pears'), (4, 'Bananas')]
>>> print [(i,f) for i in nums for f in fruit if f[0] == "P"]
[(1, 'Peaches'), (1, 'Pears'),
(2, 'Peaches'), (2, 'Pears'),
(3, 'Peaches'), (3, 'Pears'),
(4, 'Peaches'), (4, 'Pears')]
>>> print [(i,f) for i in nums for f in fruit if f[0] == "P" if i%2 == 1]
[(1, 'Peaches'), (1, 'Pears'), (3, 'Peaches'), (3, 'Pears')]
>>> print [i for i in zip(nums,fruit) if i[0]%2==0]
[(2, 'Peaches'), (4, 'Bananas')]

```

Reference Implementation

```    List comprehensions become part of the Python language with
release 2.0, documented in [1].

```

BDFL Pronouncements

```    - The syntax proposed above is the Right One.

- The form [x, y for ...] is disallowed; one is required to write
[(x, y) for ...].

- The form [... for x... for y...] nests, with the last index
varying fastest, just like nested for loops.

```

References

```    [1] http://docs.python.org/reference/expressions.html#list-displays

```