matrices - ¿Qué tan grande puede obtener una matriz de Python?
multiplicar matrices python numpy (8)
12000 elementos no son nada en Python ... y en realidad la cantidad de elementos puede llegar tan lejos como el intérprete de Python tenga memoria en su sistema.
En Python, ¿cuán grande puede ser una matriz / lista? Necesito una matriz de alrededor de 12000 elementos. ¿Todavía podré ejecutar métodos de matriz / lista como ordenar, etc.?
Claro, está bien. En realidad, puedes verlo fácilmente:
l = range(12000)
l = sorted(l, reverse=True)
Ejecutar esas líneas en mi máquina tomó:
real 0m0.036s
user 0m0.024s
sys 0m0.004s
Pero seguro como todos los demás dijeron. Cuanto más grande sea la matriz, más lentas serán las operaciones.
Como dice la documentación de Python :
sys.maxsize
El entero positivo más grande admitido por el tipo Py_ssize_t de la plataforma, y por lo tanto las listas de tamaño máximo, cadenas, dicts y muchos otros contenedores pueden tener.
En mi computadora (Linux x86_64):
>>> import sys
>>> print sys.maxsize
9223372036854775807
Diría que solo estás limitado por la cantidad total de RAM disponible. Obviamente, cuanto mayor sea el conjunto, más operaciones durará.
En el código casual, he creado listas con millones de elementos. Creo que la implementación de las listas de Python solo está vinculada por la cantidad de memoria en su sistema.
Además, los métodos / funciones de la lista deberían seguir funcionando a pesar del tamaño de la lista.
Si le importa el rendimiento, podría valer la pena examinar una biblioteca como NumPy .
No hay límite de número de lista. La razón principal que causa su error es la RAM. Por favor actualice su tamaño de memoria.
Las características de rendimiento para las listas se describen en Effbot.
Las listas de Python se implementan realmente como vector para un acceso aleatorio rápido, por lo que el contenedor básicamente contendrá tantos elementos como espacio haya en la memoria. (Necesita espacio para los punteros que figuran en la lista, así como espacio en la memoria para los objetos a los que se apunta).
Agregar es O(1)
(complejidad constante amortizada), sin embargo, insertar / eliminar desde el medio de la secuencia requerirá un reordenamiento O(n)
(complejidad lineal), que será más lento que el número de elementos en su lista.
Su pregunta de clasificación tiene más matices, ya que la operación de comparación puede tomar un tiempo ilimitado. Si está realizando comparaciones realmente lentas, llevará mucho tiempo, aunque no es una falla del tipo de datos de la lista de Python .
La inversión solo toma la cantidad de tiempo que se requiere para intercambiar todos los punteros de la lista (necesariamente O(n)
(complejidad lineal), ya que toca cada puntero una vez).
De acuerdo con el código fuente , el tamaño máximo de una lista es PY_SSIZE_T_MAX/sizeof(PyObject*)
.
PY_SSIZE_T_MAX
se define en pyport.h como be ((size_t) -1)>>1
En un sistema regular de 32 bits, esto es (4294967295/2) / 4 o 536870912.
Por lo tanto, el tamaño máximo de una lista de Python en un sistema de 32 bits es de 536,870,912 elementos.
Siempre que la cantidad de elementos que tenga sea igual o inferior a esta, todas las funciones de la lista deberían funcionar correctamente.