so imma go thru 2 set of comparisons between sequences in python.
- container vs flat sequences
- mutable vs immutable sequences
container vs flat seqs
container seqs are the ones that can hold items of different types, incl nested containers. examples: list
, tuple
, collections.deque
flat seqs hold items of one simple type. examples: str
, bytes
, array.array
.
a container seq holds refs to objs it contains which can be of any type, while a flat seq stores the value of its items in its own memory space, not distinct python objs.
mutable vs immutable seqs
examples for mutable: list
, bytearray
, array.array
, collections.deque
examples for immutable: tuple
, str
, bytes
mutable sequences inherit all methods from immutable seqs, and additionally implement additional methods. the built-in concrete seq types don't subclass the Sequence
and MutableSequence
ABCs, but they're virtual subclasses registered with those ABCs. being virtual subclasses, tuple
and list
pass these tests:
>>> from collections import abc
>>> issubclass(tuple, abc.Sequence)
True
>>> issubclass(list, abc.MutableSequence)
True
the most fundamental seq types is the list
which is a mutable container.
Top comments (0)