This PEP describes a proposed syntactical extension to Python, list comprehensions.
The Proposed SolutionIt 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.
RationaleList comprehensions provide a more concise way to create lists in situations where map()
and filter()
and/or nested loops would currently be used.
>>> 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[x, y for ...]
is disallowed; one is required to write [(x, y) for ...]
.[... for x... for y...]
nests, with the last index varying fastest, just like nested for loops.Source: https://github.com/python/peps/blob/main/peps/pep-0202.rst
Last modified: 2025-02-01 08:55:40 GMT
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4