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.arraytipo, 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) * lengthbytes de memoria. Principalmente, debe usarlo cuando necesite exponer una matriz C a una extensión o una llamada al sistema (por ejemplo, ioctlo fctnl).
array.arrayTambié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.arrayes útil cuando necesita una matriz de datos C homogénea por otras razones que no sean matemáticas .