Básicamente, las listas de Python son muy flexibles y pueden contener datos completamente heterogéneos y arbitrarios, y se pueden agregar de manera muy eficiente, en tiempo constante amortizado . Si necesita reducir y hacer crecer su lista de manera eficiente en el tiempo y sin problemas, son el camino a seguir. Pero utilizan un espacio mucho más que C matrices .
El array.array
tipo, por otro lado, es solo una envoltura delgada en matrices C. Solo puede contener datos homogéneos, todos del mismo tipo, por lo que solo utiliza sizeof(one object) * length
bytes de memoria. Principalmente, debe usarlo cuando necesite exponer una matriz C a una extensión o una llamada al sistema (por ejemplo, ioctl
o fctnl
).
array.array
También es una forma razonable de representar una cadena mutable en Python 2.x ( array('B', bytes)
). Sin embargo, Python 2.6+ y 3.x ofrece una cadena de bytes mutable como bytearray
.
Sin embargo, si desea hacer cálculos matemáticos en una matriz homogénea de datos numéricos, entonces es mucho mejor usar NumPy, que puede vectorizar automáticamente las operaciones en matrices multidimensionales complejas.
En pocas palabras : array.array
es útil cuando necesita una matriz de datos C homogénea por otras razones que no sean matemáticas .