This is documented under Structural Pattern Matching
Like unpacking assignments, tuple and list patterns have exactly the same meaning and actually match arbitrary sequences. Technically, the subject must be a sequence. Therefore, an important exception is that patterns don’t match iterators. Also, to prevent a common mistake, sequence patterns don’t match strings.
and in PEP 635 -- Structural Pattern Matching: Motivation and Rationale
Answer from user459872 on Stack OverflowAs in iterable unpacking, we do not distinguish between 'tuple' and 'list' notation.
[a, b, c],(a, b, c)anda, b, care all equivalent. While this means we have a redundant notation and checking specifically for lists or tuples requires more effort (e.g. caselist([a, b, c])), we mimic iterable unpacking as much as possible.
Videos
It's a pretty nifty feature and it's a much easier to extend or extend, like selectively flattening some values in a dictionary based on the key, for instance. I've written about it extensively on Mastering Structural Pattern Matching