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())