beginner

Lists & Tuples

7 min readLast updated: 2026-07-12

Overview

Lists are mutable sequences. Tuples are immutable sequences. Choose the right collection based on your need for changes.

Learning Objectives

  • Manage list insertions, updates, and sorting.
  • Use tuples to store fixed values.
  • Select the correct type based on data mutability.

Concept Explanation

Lists are mutable, meaning you can update, add, or delete elements in-place. Tuples are immutable and cannot be changed after creation. Because tuples are fixed, they use less memory and can be used as dictionary keys.

Code Examples

Example 1 — Basics

This example introduces the fundamental syntax and concepts.

python
my_list = [10, 20]
my_tuple = (10, 20)

Example 2 — Everyday Usage

This example demonstrates a realistic scenario handling business parameters.

python
# Edit inventory list items
inventory = ['books', 'pens']
inventory.append('pencils')
inventory.sort()
print(inventory)

Example 3 — Advanced Example

This example shows clean, production-grade code structure following senior development standards.

python
# Using tuples as immutable keys inside dictionary lookups
registry = {}
coord_key = (40.7128, -74.0060)
registry[coord_key] = 'New York City'
print(registry.get(coord_key))

Visual Flow

The following execution flow represents the step-by-step evaluation inside the interpreter:

text
Append Item → Check capacity → Resize if needed → Insert value reference

Common Mistakes

Review these common pitfalls when working with this topic:

  • Using list.pop(0) to dequeue items (this shifts all elements in memory, which is slow; use collections.deque instead).
  • Forgetting a comma when creating single-item tuples (e.g. t = (1) is an int; use t = (1,) instead).
  • Modifying list sizes inside loops.
  • Expecting tuple items to be modifiable.

Best Practices

Enforce these Pythonic best practices in your codebase:

❌ Don't
python
items = [1, 2, 3]
items.pop(0) # Slow index shifting
✅ Do
python
from collections import deque
q = deque([1, 2, 3])
q.popleft() # Fast double-ended pops

Performance Notes

Keep these optimization guidelines in mind for performance-sensitive hotpaths:

  • List appends are O(1) amortized, but list inserts at index 0 run in O(N) time because all other elements must be shifted in memory.

Quick Revision

Use these key summaries for last-minute revision:

  • Lists are mutable and resize dynamically.
  • Tuples are immutable fixed-size sequences.
  • Single-item tuples require a trailing comma.
  • deque is better than list for FIFO queues.
  • Tuples are hashable if all their items are hashable.