¿Errores de memoria y límites de lista?

Necesito producir matrices grandes y muy grandes (cadenas de Markov) con fines científicos. Realizo cálculos que pongo en una lista de 20301 elementos (= una fila de mi matriz). Necesito todos esos datos en la memoria para continuar con el siguiente paso de Markov, pero puedo almacenarlos en otro lugar (por ejemplo, un archivo) si es necesario, incluso si ralentizará mi recorrido de la cadena de Markov. Mi computadora (laboratorio científico): Bi-xenon 6 núcleos / 12 hilos cada uno, 12GB de memoria, SO: win64

  Traceback (most recent call last):
  File "my_file.py", line 247, in <module>
    ListTemp.append(calculus)
MemoryError

Ejemplo de resultados de cálculo: 9.233747520008198e-102 (sí, está por encima de 1/9000)

El error se genera al almacenar el elemento 19766:

ListTemp[19766]
1.4509421012263216e-103

Si voy más lejos

Traceback (most recent call last):
  File "<pyshell#21>", line 1, in <module>
    ListTemp[19767]
IndexError: list index out of range

e modo que esta lista tenía un error de memoria en el bucle de 19767.

Preguntas:

¿Hay un límite de memoria para una lista? ¿Es un "límite por lista" o un "límite global por script"?

¿Cómo evitar esos límites? ¿Alguna posibilidad en mente?

¿Ayudará usar numpy, python64? ¿Cuáles son los límites de memoria con ellos? ¿Qué pasa con otros idiomas?

Respuestas a la pregunta(4)

Su respuesta a la pregunta