Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is list comprehension in Python?
List comprehension is a concise way to create lists by writing a single expression inside square brackets, often replacing loops and append calls.
Click to reveal answer
beginner
Write the basic syntax of a list comprehension.
The basic syntax is: [expression for item in iterable] where expression is the value to add, item is each element from iterable.
Click to reveal answer
beginner
How does list comprehension compare to a for-loop for creating a list?
List comprehension is shorter and often easier to read. It combines the loop and list creation in one line, unlike a for-loop which needs multiple lines and an append call.
Click to reveal answer
beginner
Example: What does this list comprehension do? [x * 2 for x in range(3)]
It creates a list by multiplying each number from 0 to 2 by 2. The result is [0, 2, 4].
Click to reveal answer
beginner
Can list comprehensions include conditions?
Yes, but that is a more advanced topic. The basic syntax does not include conditions. Conditions are added with an if clause inside the comprehension.
Click to reveal answer
What is the output of this code? [x + 1 for x in [1, 2, 3]]
A[2, 3, 4]
B[1, 2, 3]
C[0, 1, 2]
D[1, 3, 5]
✗ Incorrect
Each element is increased by 1, so 1+1=2, 2+1=3, 3+1=4.
Which part of a list comprehension is the 'iterable'?
AThe expression before 'for'
BThe variable after 'for'
CThe brackets []
DThe sequence after 'in'
✗ Incorrect
The iterable is the sequence or collection after the 'in' keyword.
What does this list comprehension do? [x for x in range(5)]
ACreates a list of 5 zeros
BCreates a list of numbers 1 to 5
CCreates a list of numbers 0 to 4
DCreates an empty list
✗ Incorrect
range(5) generates numbers 0 to 4, and the comprehension collects them as is.
Which of these is a valid list comprehension?
Afor x in [1, 2, 3]: x * 2
B[x * 2 for x in [1, 2, 3]]
C[x * 2 in [1, 2, 3]]
Dx * 2 for x in [1, 2, 3]
✗ Incorrect
Only option B follows the correct list comprehension syntax.
What type of value does a list comprehension produce?
AA list
BA string
CAn integer
DA dictionary
✗ Incorrect
List comprehensions always produce a list.
Explain the basic syntax of a list comprehension and how it works.
Think about how you write a for-loop and how list comprehension shortens it.
You got /6 concepts.
Give an example of a simple list comprehension that doubles numbers from 0 to 4.
Use range and multiply each item by 2 inside the comprehension.
You got /5 concepts.
Practice
(1/5)
1. What does the following list comprehension do? [x * 2 for x in range(3)]
easy
A. Creates a list of numbers from 1 to 6
B. Creates a list of numbers from 0 to 3
C. Creates a list of numbers doubled from 0 to 2
D. Creates a list of numbers squared from 0 to 2
Solution
Step 1: Understand the range and loop variable
The range(3) generates numbers 0, 1, 2. The variable x takes these values one by one.
Step 2: Apply the expression to each value
Each x is multiplied by 2, so the list becomes [0*2, 1*2, 2*2] = [0, 2, 4].
Final Answer:
Creates a list of numbers doubled from 0 to 2 -> Option C
Quick Check:
List comprehension doubles each number in range(3) [OK]
Hint: Remember: for x in range(3) gives 0,1,2 only [OK]
Common Mistakes:
Thinking range(3) includes 3
Confusing doubling with squaring
Ignoring the for loop variable
2. Which of the following is the correct syntax for a list comprehension that creates a list of squares of numbers 0 to 4?
easy
A. [x**2 x in range(5)]
B. [for x in range(5) x**2]
C. [x^2 in range(5)]
D. [x**2 for x in range(5)]
Solution
Step 1: Recall list comprehension syntax
The correct syntax is [expression for variable in iterable]. Here, expression is x**2 and iterable is range(5).
Step 2: Check each option
[x**2 for x in range(5)] matches the correct syntax. Options A, B, and C have syntax errors or wrong order.
Final Answer:
[x**2 for x in range(5)] -> Option D
Quick Check:
Correct syntax is [expr for var in iterable] [OK]
Hint: Remember: list comprehension = [expression for variable in iterable] [OK]
Common Mistakes:
Placing 'for' after expression
Using ^ instead of ** for power
Missing 'in' keyword
3. What is the output of this code?
nums = [1, 2, 3, 4]
squares = [n*n for n in nums if n % 2 == 0]
print(squares)
medium
A. [4, 16]
B. [1, 4, 9, 16]
C. [2, 4]
D. [1, 9]
Solution
Step 1: Understand the list and condition
The list nums is [1, 2, 3, 4]. The condition 'if n % 2 == 0' selects even numbers: 2 and 4.
Step 2: Calculate squares of selected numbers
Squares of 2 and 4 are 4 and 16, so the list squares is [4, 16].
Final Answer:
[4, 16] -> Option A
Quick Check:
Filter even numbers, then square them [OK]
Hint: Filter first, then apply expression in list comprehension [OK]
Common Mistakes:
Including odd numbers by mistake
Confusing values with their squares
Ignoring the if condition
4. Find the error in this list comprehension:
result = [x + 1 for in range(5)]
medium
A. Missing variable name after 'for'
B. Using + instead of *
C. range(5) should be range(1,5)
D. List comprehension cannot use range
Solution
Step 1: Check the for loop syntax inside comprehension
The syntax requires a variable name after 'for', like 'for x in range(5)'. Here, 'x' is missing.
Step 2: Identify the error
Because the variable is missing, Python will raise a syntax error.
Final Answer:
Missing variable name after 'for' -> Option A
Quick Check:
for loop needs variable name [OK]
Hint: Always include variable after 'for' in comprehension [OK]
Common Mistakes:
Omitting the loop variable
Misplacing 'in' keyword
Thinking range needs to start at 1
5. You have a list of words: words = ['apple', 'bee', 'cat', 'dog', 'elephant']. Using list comprehension, how do you create a list of the lengths of words that have more than 3 letters?
hard
A. [w for w in words if len(w) > 3]
B. [len(w) for w in words if len(w) > 3]
C. [len(words) for w in words if len(w) > 3]
D. [len(w) > 3 for w in words]
Solution
Step 1: Understand the filtering condition
We want only words with length greater than 3, so use 'if len(w) > 3' to filter.
Step 2: Create list of lengths
For each filtered word, get its length with len(w). So the comprehension is [len(w) for w in words if len(w) > 3].
Final Answer:
[len(w) for w in words if len(w) > 3] -> Option B
Quick Check:
Filter words by length, then get lengths [OK]
Hint: Filter first, then apply len() in comprehension [OK]