Phase 15 of 25 · Topic 15.1

Sequence Pattern Matching (Lists & Tuples)

1Concept

Sequence patterns match fixed length sequences, wildcards (`_`), and rest slicing with star syntax (`*rest`), cleanly extracting elements without indexing.

2Architecture Diagram

match ["GET", "/api/v1/users", "auth=token"]:
  case ["GET", path, *params]: ---> path='/api/v1/users', params=['auth=token']

3Code Example

Python 3.12
def parse_command(cmd: list[str]):
    match cmd:
        case ["QUIT" | "EXIT"]:
            return "Application Terminating"
        case ["LOAD", filename]:
            return f"Loading file: {filename}"
        case ["FILTER", field, "EQUALS", value]:
            return f"Applying filter on {field} == {value}"
        case ["BATCH", *items]:
            return f"Processing batch of {len(items)} items: {items}"
        case _:
            return "Unrecognized Command"

print(parse_command(["LOAD", "dataset.parquet"]))
print(parse_command(["BATCH", "item1", "item2", "item3"]))

4Expected Output

Loading file: dataset.parquet
Processing batch of 3 items: ['item1', 'item2', 'item3']

5Key Takeaways

  • Sequence patterns match both lists and tuples identically.
  • Only ONE starred pattern (`*rest`) is allowed per sequence pattern.
  • Wildcard `_` matches a single element without variable binding.