Bird
Raised Fist0
Pythonprogramming~10 mins

List comprehension vs loop in Python - Interactive Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to create a list of squares using a loop.

Python
squares = []
for i in range(5):
    squares.append(i[1]2)
print(squares)
Drag options to blanks, or click blank then click option'
A-
B*
C+
D**
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using multiplication (*) instead of exponentiation (**).
Using addition (+) or subtraction (-) by mistake.
2fill in blank
medium

Complete the list comprehension to create a list of squares.

Python
squares = [i[1]2 for i in range(5)]
print(squares)
Drag options to blanks, or click blank then click option'
A**
B+
C*
D-
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using multiplication (*) instead of exponentiation (**).
Using addition (+) or subtraction (-) by mistake.
3fill in blank
hard

Fix the error in the loop that tries to create a list of even numbers.

Python
evens = []
for num in range(10):
    if num [1] 2 == 0:
        evens.append(num)
print(evens)
Drag options to blanks, or click blank then click option'
A//
B+
C%
D**
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using addition (+) instead of modulo (%).
Using floor division (//) or exponentiation (**) incorrectly.
4fill in blank
hard

Fill both blanks to create a list of even squares using list comprehension.

Python
even_squares = [x[1]2 for x in range(10) if x [2] 2 == 0]
print(even_squares)
Drag options to blanks, or click blank then click option'
A**
B%
C==
D+
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using addition (+) or equality (==) in the wrong place.
Mixing up operators for squaring and checking evenness.
5fill in blank
hard

Fill all three blanks to create a dictionary of numbers and their squares for odd numbers only.

Python
odd_squares = [1]: [1] for [2] in range(10) if [3] % 2 != 0}
print(odd_squares)
Drag options to blanks, or click blank then click option'
Anum
Bnum**2
Di
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using different variable names inconsistently.
Not squaring the number for the value.

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