Skip to main content

7.2 - Comprehensions

Comprehensions in Python provide a concise and expressive way to construct new sequences (such as lists, sets, dictionaries) or iterators from existing ones.


7.2.1 - List Comprehensions

List comprehensions create lists in a clear and concise manner, using an existing list or any iterable.

Basic Syntax

new_list = [expression for item in iterable if condition]

7.2.2 - Dictionary Comprehensions

Dictionary comprehensions allow for the creation of dictionaries from iterables, similar to list comprehensions.

Basic Syntax

new_dict = {key_expression: value_expression for item in iterable if condition}

7.2.3 - Set Comprehensions

Set comprehensions provide a way to create sets, which are collections of unique elements, using an existing iterable.

Basic Syntax

new_set = {expression for item in iterable if condition}

7.2.4 - Comprehensions Case Studies

7.2.4.1 - Case Study 1: Squaring Numbers (List Comprehension)

Creating a list of squares for a range of numbers.

squares = [x**2 for x in range(10)]

7.2.4.2 - Case Study 2: Constructing a Dictionary (Dictionary Comprehension)

Mapping characters to their ASCII values.

ascii_map = {char: ord(char) for char in 'abc'}

7.2.4.3 - Case Study 3: Filtering Elements (Set Comprehension)

Creating a set of prime numbers from a list.

primes = {n for n in range(2, 50) if all(n % d != 0 for d in range(2, int(n**0.5) + 1))}

7.2.4.4 - Case Study 4: Conditional List Comprehension

Creating a list of even numbers squared, and odd numbers cubed.

numbers = [x**2 if x % 2 == 0 else x**3 for x in range(10)]

7.2.4.5 - Case Study 5: Nested Dictionary Comprehension

Creating a nested dictionary to represent a matrix.

matrix = {(row, col): row * col for row in range(3) for col in range(3)}

7.2.4.6 - Case Study 6: Set Comprehension with External Function

Utilizing an external function within a set comprehension.

def is_prime(n):
return n > 1 and all(n % i != 0 for i in range(2, int(n**0.5) + 1))

primes = {x for x in range(2, 50) if is_prime(x)}

7.2.4.7 - Case Study 7: Generator for Fibonacci Series

Using a generator expression to create a Fibonacci series generator.

def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a + b

fib_series = (x for x in fibonacci())