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.