DEV Community

Timothy Huang
Timothy Huang

Posted on • Edited on

2

List comprehension in Python

Sometimes we need a list with a serial integers, we can use the list comprehension syntax to generate a list with a serial integers like:

a = [ x for x in range(0,100) ]
# a = [0, 1, 2, ... 99]
Enter fullscreen mode Exit fullscreen mode

If we need a list with some condition, like even numbers. We can also use the list comprehension syntax to generate a list with even numbers, like:

a = [ x for x in range(0, 100) if x % 2 == 0]
# a = [0, 2, 4, ... 98]
Enter fullscreen mode Exit fullscreen mode

Another case we need a list with tuple like 2-dimension coordinate:

a = [ (x, y) for x in range(1, 6) for y in range(3, 6) ]
# a = [ (1, 3), (1, 4), (1, 5), (2, 3), (2, 4) ... ] 
## total 5 * 3 items 
Enter fullscreen mode Exit fullscreen mode

But if we need the value pairs with both index with x, y move simultaneously, we can use zip:

a = [ x for x in zip(range(1, 6), range(3, 6)) ]
# a = [(1, 3), (2, 4), (3, 5)]
## total 3 items, because the range(3, 6)
Enter fullscreen mode Exit fullscreen mode

The same usage with list comprehension, set and dictionary also has their comprehension.

set comprehension:

s = { v for v in 'ABCDE' }
# s = {'D', 'C', 'A', 'B', 'E'}
Enter fullscreen mode Exit fullscreen mode

with some condition:

s = { v for v in 'ABCDE' if v not in 'BC' }
# {'D', 'E', 'A'}
Enter fullscreen mode Exit fullscreen mode

dictionary comprehension:

s = {key: val for key, val in enumerate('ABCDEF')}
# s = {0: 'A', 1: 'B', 2: 'C', 3: 'D', 4: 'E', 5: 'F'}
Enter fullscreen mode Exit fullscreen mode

with some condition:

s = {key: val for key, val in enumerate('ABCDEF') if val not in 'CD'}
# s = {0: 'A', 1: 'B', 4: 'E', 5: 'F'}
Enter fullscreen mode Exit fullscreen mode

with some condition (more complex):

s = {key: val for key, val in enumerate('ABCDEF') if (val not in 'CD') & (key != 0)}
# s = {1: 'B', 4: 'E', 5: 'F'}
Enter fullscreen mode Exit fullscreen mode

After these example, we can understand the list comprehension to generate list and other types of data.

It's simple but important!

Happy coding!

Reference: https://en.wikipedia.org/wiki/List_comprehension

Heroku

Build apps, not infrastructure.

Dealing with servers, hardware, and infrastructure can take up your valuable time. Discover the benefits of Heroku, the PaaS of choice for developers since 2007.

Visit Site

Top comments (0)

AWS GenAI LIVE image

How is generative AI increasing efficiency?

Join AWS GenAI LIVE! to find out how gen AI is reshaping productivity, streamlining processes, and driving innovation.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay