Basicamente, as listas Python são muito flexíveis e podem conter dados arbitrários completamente heterogêneos e podem ser anexados com muita eficiência, em tempo constante e amortizado . Se você precisar diminuir e aumentar sua lista com eficiência e sem problemas, eles são o caminho a percorrer. Mas eles usam um espaço muito mais do que matrizes C .
O array.array
tipo, por outro lado, é apenas um invólucro fino em matrizes C. Ele pode conter apenas dados homogêneos, todos do mesmo tipo e, portanto, usa apenas sizeof(one object) * length
bytes de memória. Principalmente, você deve usá-lo quando precisar expor uma matriz C a um ramal ou a uma chamada do sistema (por exemplo, ioctl
ou fctnl
).
array.array
também é uma maneira razoável de representar uma sequência mutável no Python 2.x ( array('B', bytes)
). No entanto, o Python 2.6+ e 3.x oferece uma sequência de bytes mutável como bytearray
.
No entanto, se você deseja fazer contas em uma matriz homogênea de dados numéricos, é muito melhor usar o NumPy, que pode vetorizar automaticamente as operações em matrizes multidimensionais complexas.
Para resumir uma longa história : array.array
é útil quando você precisa de uma matriz C homogênea de dados por outros motivos que não sejam matemática .