Bird
Raised Fist0
Pythonprogramming~10 mins

Basic list comprehension syntax in Python - Step-by-Step Execution

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
Concept Flow - Basic list comprehension syntax
Start with iterable
Pick each item
Apply expression to item
Add result to new list
Repeat for all items
Return new list
The flow shows how list comprehension takes each item from an iterable, applies an expression, and collects results into a new list.
Execution Sample
Python
numbers = [1, 2, 3, 4]
squares = [x * x for x in numbers]
print(squares)
This code creates a list of squares from the original list of numbers.
Execution Table
StepCurrent item (x)Expression (x * x)ActionNew list state
111Add 1 to list[1]
224Add 4 to list[1, 4]
339Add 9 to list[1, 4, 9]
4416Add 16 to list[1, 4, 9, 16]
End--All items processed[1, 4, 9, 16]
💡 All items in 'numbers' list processed, comprehension ends.
Variable Tracker
VariableStartAfter 1After 2After 3After 4Final
x-1234-
squares[][1][1, 4][1, 4, 9][1, 4, 9, 16][1, 4, 9, 16]
Key Moments - 3 Insights
Why does the variable 'x' change each step inside the comprehension?
Because the comprehension picks each item from the original list one by one, as shown in execution_table steps 1 to 4.
Is the original list 'numbers' changed by the comprehension?
No, the original list stays the same; the comprehension creates a new list 'squares' as shown in variable_tracker.
What happens if the original list is empty?
The comprehension runs zero times and returns an empty list immediately, similar to the 'End' row in execution_table.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the value of 'x' at step 3?
A9
B3
C4
D16
💡 Hint
Check the 'Current item (x)' column at step 3 in the execution_table.
At which step does the new list first contain the value 4?
AStep 2
BStep 1
CStep 3
DStep 4
💡 Hint
Look at the 'New list state' column in execution_table rows.
If the original list 'numbers' was empty, what would the final 'squares' list be?
A[0]
B[1]
C[]
DNone
💡 Hint
Refer to the 'End' row in execution_table and the key_moments about empty input.
Concept Snapshot
Basic list comprehension syntax:
[new_list] = [expression for item in iterable]
- Iterates over each item
- Applies expression
- Collects results in new list
- Original list unchanged
- Fast and concise way to create lists
Full Transcript
This visual trace shows how basic list comprehension works in Python. We start with an original list called 'numbers'. The comprehension picks each item 'x' from this list one by one. For each 'x', it calculates 'x * x' and adds the result to a new list called 'squares'. This process repeats until all items are processed. The original list remains unchanged. The final output is a list of squares of the original numbers. Key points include how 'x' changes each step, the new list growing step by step, and what happens if the original list is empty.

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

  1. 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.
  2. 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].
  3. Final Answer:

    Creates a list of numbers doubled from 0 to 2 -> Option C
  4. 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

  1. 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).
  2. 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.
  3. Final Answer:

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

  1. 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.
  2. Step 2: Calculate squares of selected numbers

    Squares of 2 and 4 are 4 and 16, so the list squares is [4, 16].
  3. Final Answer:

    [4, 16] -> Option A
  4. 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

  1. 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.
  2. Step 2: Identify the error

    Because the variable is missing, Python will raise a syntax error.
  3. Final Answer:

    Missing variable name after 'for' -> Option A
  4. 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

  1. Step 1: Understand the filtering condition

    We want only words with length greater than 3, so use 'if len(w) > 3' to filter.
  2. 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].
  3. Final Answer:

    [len(w) for w in words if len(w) > 3] -> Option B
  4. Quick Check:

    Filter words by length, then get lengths [OK]
Hint: Filter first, then apply len() in comprehension [OK]
Common Mistakes:
  • Returning words instead of lengths
  • Using len(words) instead of len(w)
  • Returning boolean instead of lengths