Bird
Raised Fist0
Pythonprogramming~20 mins

List comprehension vs loop in Python - Practice Questions

Choose your learning style10 modes available

Start learning this pattern below

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
Challenge - 5 Problems
๐ŸŽ–๏ธ
List Comprehension Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
โ“ Predict Output
intermediate
2:00remaining
Output of list comprehension vs loop
What is the output of the following code snippet?
Python
result = []
for i in range(3):
    result.append(i * 2)
print(result)
A[0, 2, 4]
B[0, 1, 2]
C[2, 4, 6]
D[0, 4, 8]
Attempts:
2 left
๐Ÿ’ก Hint
Think about what happens when you multiply each number in the range by 2.
โ“ Predict Output
intermediate
2:00remaining
Equivalent list comprehension output
Which option shows the output of this list comprehension?
result = [x**2 for x in range(4)]
print(result)
A[1, 4, 9, 16]
B[0, 1, 4, 9]
C[0, 2, 4, 6]
D[1, 2, 3, 4]
Attempts:
2 left
๐Ÿ’ก Hint
Remember that x**2 means x squared.
โ“ Predict Output
advanced
2:00remaining
Output difference between loop and list comprehension with condition
What is the output of this code?
result = []
for x in range(5):
    if x % 2 == 0:
        result.append(x + 1)
print(result)
A[0, 2, 4]
B[1, 2, 3, 4, 5]
C[1, 3, 5]
D[2, 4, 6]
Attempts:
2 left
๐Ÿ’ก Hint
Check which numbers are even and what happens when you add 1.
โ“ Predict Output
advanced
2:00remaining
List comprehension with condition output
What is the output of this list comprehension?
result = [x + 1 for x in range(5) if x % 2 == 0]
print(result)
A[1, 3, 5]
B[2, 4, 6]
C[0, 2, 4]
D[1, 2, 3, 4, 5]
Attempts:
2 left
๐Ÿ’ก Hint
The condition filters even numbers, then adds 1 to each.
โ“ Predict Output
expert
2:00remaining
Comparing performance: loop vs list comprehension
Which option correctly describes the output of this timing code?
import time
start = time.time()
result = []
for i in range(1000000):
    result.append(i)
end = time.time()
print(round(end - start, 2))
and
start = time.time()
result = [i for i in range(1000000)]
end = time.time()
print(round(end - start, 2))
ABoth take exactly the same time.
BLoop is faster than list comprehension.
CBoth raise a runtime error due to memory.
DList comprehension is generally faster than the loop.
Attempts:
2 left
๐Ÿ’ก Hint
Think about how Python optimizes list comprehensions.

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

  1. Step 1: Understand list comprehension purpose

    List comprehension is designed to create lists in a concise and readable way.
  2. Step 2: Compare with traditional loops

    Traditional loops require more lines and are less compact than list comprehensions.
  3. Final Answer:

    It creates lists in fewer lines and is more readable -> Option B
  4. 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

  1. Step 1: Recall list comprehension syntax

    The correct syntax is: [expression for variable in iterable].
  2. Step 2: Check each option

    [x**2 for x in range(5)] matches the correct syntax. Others have syntax errors or missing parts.
  3. Final Answer:

    [x**2 for x in range(5)] -> Option A
  4. 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

  1. Step 1: Understand the loop operation

    The loop goes through each number in nums and appends its square to squares.
  2. Step 2: Calculate squares for each element

    1 squared is 1, 2 squared is 4, 3 squared is 9, so squares = [1, 4, 9].
  3. Final Answer:

    [1, 4, 9] -> Option C
  4. 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

  1. Step 1: Check list comprehension syntax

    The list comprehension is missing the closing square bracket "]" at the end.
  2. Step 2: Verify other parts

    Operator * is correct for multiplication, range(5) is correct, and print syntax is valid.
  3. Final Answer:

    Missing closing bracket "]" in list comprehension -> Option D
  4. 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

  1. Step 1: Understand the requirement

    We want even numbers from 0 to 10 inclusive, so numbers divisible by 2.
  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.
  3. Final Answer:

    [x for x in range(11) if x % 2 == 0] -> Option A
  4. Quick Check:

    Filter even numbers with modulo == 0 [OK]
Hint: Use modulo % 2 == 0 to filter even numbers [OK]
Common Mistakes:
  • Using multiplication instead of filtering
  • Using wrong condition for even check
  • Confusing division with modulo