DEV Community

dev0928
dev0928

Posted on

What are Python Comprehensions?

Python has a powerful feature called comprehensions. With this comprehension feature, a new sequence can be built based on another sequence with added calculation logic in a succinct way. Python 2.0 introduced list comprehensions. Dictionary and set comprehensions were introduced in Python 3.0. This article covers various types of comprehensions with examples.

List Comprehension

Let’s try to understand comprehension with an example. Let’s say we have a list of numbers. We want to build a new list that contains double of every odd number from the original list. New list with above requirements can be created using list comprehension:

nums = [11, 21, 30, 40, 55, 66, 17]
odd_nums = [n*2 for n in nums if n % 2 != 0]    # output is [22, 42, 110, 34]
Enter fullscreen mode Exit fullscreen mode

Let’s break down the above statement to understand the structure of comprehension.

Comprehensions generally have below parts:

  • An input sequence - nums in the above example which is a list
  • A variable representing individual members of the sequence - n in the above example
  • An optional predicate - if n % 2 != 0 we are filtering odd numbers from the original list
  • An output expression - n*2 this double the filtered odd numbers

Here is an illustration outlining different parts of the list comprehension:

Comprehension Representation

Here are few more list comprehension examples:

nums = [1, 2, 3, 4]
#Get a new list containing square of the numbers
sq_nums = [n*n for n in nums]      # [1, 4, 9, 16]
fruits = [Apple, Banana, Orange]
#convert list to lowercase
l_fruits = [name.lower() for name in names]  #[‘apple’, ‘banana’, ‘orange’]
Enter fullscreen mode Exit fullscreen mode

Set Comprehension

We can create set sequences using set comprehensions. Let’s say we have a list containing duplicate numbers and we want to create a set without duplicates. Also, the resulting sequence should be double of the original numbers. This can be achieved using set comprehension. Please note as sets don’t maintain order of elements, resulting sequence's members could be arranged in any random order.

dup_nums = [1, 2, 2, 3, 4, 5, 12, 10, 2]
sq_set = {num*2 for num in dup_nums} # {1, 4, 100, 9, 16, 144, 25}
Enter fullscreen mode Exit fullscreen mode

Dictionary Comprehension

Here is an example of dictionary comprehension creation, containing number as its key with square of the number as its value

 d = {n : n*n for n in range(1, 6)}     # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
Enter fullscreen mode Exit fullscreen mode

Tuple Comprehension

There are no tuple comprehensions in Python. Python generators could be used to create tuples in a similar succinct way.

Top comments (0)