Python List Comprehensions: For Concise and Readable Code
Introduction to Python List Comprehension
List comprehensions in Python provide a concise way to create lists. They are not only more readable but also more efficient than traditional for-loops. This tutorial focuses on practical examples to help you master list comprehensions with minimal theory.
Basic List Comprehension:
A basic list comprehension is a compact way to create a list by applying an expression to each item in an iterable.
Example 1: Creating a list of squares
This example shows how to create a list of squares using list comprehension.
Code:
# Create a list of squares of numbers from 0 to 9
squares = [x**2 for x in range(10)]
# Print the list of squares
print(squares)
Output:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Explanation:
The expression 'x**2' is applied to each element 'x' in the range from 0 to 9. The result is a list of squares of these numbers. This single line of code replaces what would typically require multiple lines using a for-loop.
Filtering with list comprehensions:
List comprehensions can include an if condition to filter items from the iterable.
Example 2: Filtering Even Numbers
This example demonstrates how to filter even numbers using a list comprehension.
Code:
# Create a list of even numbers from 0 to 9
evens = [x for x in range(10) if x % 2 == 0]
# Print the list of even numbers
print(evens)
Output:
[0, 2, 4, 6, 8]
Explanation:
The list comprehension iterates through numbers from 0 to 9 and includes only those numbers that satisfy the condition 'x % 2 == 0' (i.e., even numbers). The result is a concise list of even numbers.
List Comprehensions with nested loops:
List comprehensions can also be used with nested loops to generate lists from combinations of items.
Example 3: Creating a List of Pairs
This example shows how to create a list of coordinate pairs using nested loops in a list comprehension.
Code:
# Create a list of coordinate pairs (x, y) for x and y in range(3)
pairs = [(x, y) for x in range(3) for y in range(3)]
# Print the list of pairs
print(pairs)
Output:
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
Explanation:
The list comprehension uses two nested loops: one iterating over 'x' and the other over 'y', both ranging from 0 to 2. The result is a list of all possible pairs '(x, y)' formed by the two loops.
Flattening a nested list:
List comprehensions can be used to flatten nested lists into a single list.
Example 4: Flattening a 2D List
This example demonstrates how to flatten a 2D list into a 1D list using list comprehension.
Code:
# A 2D list (list of lists)
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# Flatten the 2D list into a 1D list
flattened = [num for row in matrix for num in row]
# Print the flattened list
print(flattened)
Output:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Explanation:
The list comprehension iterates over each 'row' in the 'matrix', and then iterates over each 'num' in that 'row', adding each number to the 'flattened' list. The result is a single list containing all elements from the original nested list.
Conditional expressions in list comprehensions:
You can include a conditional expression to choose different values based on a condition.
Example 5: Replacing Negative Numbers with Zero
This example shows how to replace negative numbers in a list with zero using a conditional expression in a list comprehension.
Code:
# List with mixed positive and negative numbers
numbers = [-15, 13, -12, 17, -11, 0, 14]
# Replace negative numbers with zero
non_negative = [x if x >= 0 else 0 for x in numbers]
# Print the new list
print(non_negative)
Output:
[0, 13, 0, 17, 0, 0, 14]
Explanation:
The list comprehension iterates over 'numbers' and checks if each number 'x' is non-negative ('x >= 0'). If the condition is met, 'x' is added to the new list; otherwise, '0' is added. This results in a list where all negative numbers are replaced by zero.
Using List Comprehensions with Functions:
List comprehensions can apply functions to items in an iterable to generate a new list.
Example 6: Applying a function to each element
This example demonstrates how to apply a function to each element in a list using a list comprehension.
Code:
# Define a function that squares a number
def square(x):
return x**2
# List of numbers
numbers = [1, 2, 3, 4, 5]
# Apply the square function to each element in the list
squared_numbers = [square(x) for x in numbers]
# Print the list of squared numbers
print(squared_numbers)
Output:
[1, 4, 9, 16, 25]
Explanation:
The list comprehension iterates over the 'numbers' list and applies the 'square' function to each element 'x'. The result is a new list containing the squares of the original numbers.
List Comprehension with Dictionaries:
List comprehensions can be used to generate dictionaries by pairing keys with values.
Example 7: Creating a Dictionary from two lists
This example shows how to create a dictionary from two lists using a list comprehension.
Code:
# Two lists: one of keys and one of values
keys = ['x', 'y', 'z']
values = [1, 2, 3]
# Create a dictionary using list comprehension
dictionary = {k: v for k, v in zip(keys, values)}
# Print the dictionary
print(dictionary)
Output:
{'x': 1, 'y': 2, 'z': 3}
Explanation:
The 'zip(keys, values)' function pairs elements from the 'keys' and 'values' lists. The list comprehension then iterates over these pairs and creates key-value pairs in the 'dictionary'.
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics