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 a list comprehension in Python?
A list comprehension is a concise way to create lists by writing a single expression inside square brackets. It combines a loop and an optional condition in one line.
Click to reveal answer
beginner
How does a for loop differ from a list comprehension?
A for loop executes multiple statements over iterations and builds a list step-by-step, often requiring more lines. A list comprehension creates the list in one compact expression.
Click to reveal answer
intermediate
Which is generally faster: list comprehension or a for loop?
List comprehensions are usually faster because they are optimized internally in Python, reducing overhead compared to explicit for loops.
Click to reveal answer
beginner
Can list comprehensions include conditions?
Yes, list comprehensions can include conditions to filter items. For example: [x for x in range(10) if x % 2 == 0] creates a list of even numbers.
Click to reveal answer
intermediate
When might you prefer a for loop over a list comprehension?
Use a for loop when you need to perform multiple actions inside the loop or when the logic is too complex to fit clearly in a single expression.
Click to reveal answer
Which syntax creates a list of squares from 0 to 4 using list comprehension?
Afor x in range(5): x**2
B[x**2 for x in range(5)]
Clist(x**2 for x in range(5))
D[x*2 for x in range(5)]
✗ Incorrect
Option B correctly uses list comprehension syntax to create a list of squares.
What is a key advantage of list comprehensions over for loops?
AThey are more concise and often faster
BThey can execute multiple statements inside
CThey always use less memory
DThey can only create lists of numbers
✗ Incorrect
List comprehensions are concise and usually faster due to internal optimizations.
Which of these is NOT a valid list comprehension?
A[x**2 for x in range(5)]
B[x*2 for x in range(5)]
C[x for x in range(5) if x % 2 == 0]
D[for x in range(5) x**2]
✗ Incorrect
Option D has incorrect syntax; the 'for' must come after the opening bracket.
When is a for loop preferred over a list comprehension?
AWhen you want to create a list quickly
BWhen you want a shorter code
CWhen multiple actions are needed inside the loop
DWhen filtering items in a list
✗ Incorrect
For loops allow multiple statements and complex logic inside the loop.
What does this list comprehension do? [x for x in range(5) if x > 2]
ACreates a list of numbers from 3 to 4
BCreates a list of numbers from 0 to 2
CCreates a list of all numbers from 0 to 4
DCreates an empty list
✗ Incorrect
It filters numbers greater than 2, so the list is [3, 4].
Explain the main differences between list comprehensions and for loops in Python.
Think about code length, speed, and complexity.
You got /4 concepts.
Describe a situation where you would choose a for loop instead of a list comprehension.
Consider when one line is not enough.
You got /3 concepts.
Practice
(1/5)
1. What is the main advantage of using list comprehension over a traditional for loop in Python?
easy
A. It runs slower than a loop
B. It creates lists in fewer lines and is more readable
C. It cannot be used to create lists
D. It requires more code to write
Solution
Step 1: Understand list comprehension purpose
List comprehension is designed to create lists in a concise and readable way.
Step 2: Compare with traditional loops
Traditional loops require more lines and are less compact than list comprehensions.
Final Answer:
It creates lists in fewer lines and is more readable -> Option B
Quick Check:
List comprehension = concise and readable [OK]
Hint: List comprehension is shorter and clearer than loops [OK]
Common Mistakes:
Thinking list comprehension is slower
Believing list comprehension can't create lists
Confusing loops as always simpler
2. Which of the following is the correct syntax for a list comprehension that creates a list of squares of numbers from 0 to 4?
easy
A. [x**2 for x in range(5)]
B. [for x in range(5) x**2]
C. [x^2 in range(5)]
D. for x in range(5): x**2
Solution
Step 1: Recall list comprehension syntax
The correct syntax is: [expression for variable in iterable].
Step 2: Check each option
[x**2 for x in range(5)] matches the correct syntax. Others have syntax errors or missing parts.
Final Answer:
[x**2 for x in range(5)] -> Option A
Quick Check:
Correct list comprehension syntax = [x**2 for x in range(5)] [OK]
Hint: Remember: [expression for variable in iterable] [OK]
Common Mistakes:
Placing 'for' after expression
Using ^ instead of ** for power
Writing loop without brackets
3. What is the output of the following code?
nums = [1, 2, 3]
squares = []
for n in nums:
squares.append(n**2)
print(squares)
medium
A. [1, 2, 3]
B. [2, 4, 6]
C. [1, 4, 9]
D. Error
Solution
Step 1: Understand the loop operation
The loop goes through each number in nums and appends its square to squares.
Step 2: Calculate squares for each element
1 squared is 1, 2 squared is 4, 3 squared is 9, so squares = [1, 4, 9].
Final Answer:
[1, 4, 9] -> Option C
Quick Check:
Squares of [1,2,3] = [1,4,9] [OK]
Hint: Loop appends squares, so output is squared list [OK]
Common Mistakes:
Confusing append with extend
Expecting original list instead of squares
Syntax errors in loop
4. Identify the error in this list comprehension:
result = [x*2 for x in range(5)
print(result)
medium
A. print statement is incorrect
B. Using wrong operator * instead of **
C. range(5) should be range[5]
D. Missing closing bracket "]" in list comprehension
Solution
Step 1: Check list comprehension syntax
The list comprehension is missing the closing square bracket "]" at the end.
Step 2: Verify other parts
Operator * is correct for multiplication, range(5) is correct, and print syntax is valid.
Final Answer:
Missing closing bracket "]" in list comprehension -> Option D
Quick Check:
Syntax error due to missing bracket [OK]
Hint: Always close brackets in comprehensions [OK]
Common Mistakes:
Forgetting closing bracket
Confusing parentheses and brackets
Misusing range syntax
5. You want to create a list of even numbers from 0 to 10 using list comprehension. Which code correctly does this?
hard
A. [x for x in range(11) if x % 2 == 0]
B. [x*2 for x in range(5)]
C. [x for x in range(10) if x % 2]
D. [x for x in range(11) if x / 2 == 0]
Solution
Step 1: Understand the requirement
We want even numbers from 0 to 10 inclusive, so numbers divisible by 2.
Step 2: Analyze each option
[x for x in range(11) if x % 2 == 0] uses correct range and condition (x % 2 == 0). [x*2 for x in range(5)] doubles numbers 0-4, giving [0,2,4,6,8]. [x for x in range(10) if x % 2] filters odd numbers (x % 2 is true for odd). [x for x in range(11) if x / 2 == 0] uses division instead of modulo, which is incorrect.
Final Answer:
[x for x in range(11) if x % 2 == 0] -> Option A
Quick Check:
Filter even numbers with modulo == 0 [OK]
Hint: Use modulo % 2 == 0 to filter even numbers [OK]