Erros de memória e limites de lista?

Preciso produzir matrizes grandes e grandes (muito) (cadeias de Markov) para fins científicos. Realizo o cálculo que coloquei em uma lista de 20301 elementos (= uma linha da minha matriz). Preciso de todos esses dados na memória para prosseguir na próxima etapa do Markov, mas posso armazená-los em outro local (por exemplo, arquivo), se necessário, mesmo que isso diminua a velocidade da minha cadeia de Markov. Meu computador (laboratório científico): Bi-xenon 6 núcleos / 12 roscas cada, 12 GB de memória, SO: win64

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

Exemplo dos resultados do cálculo: 9.233747520008198e-102 (sim, ultrapassou 1/9000)

O erro é gerado ao armazenar o 19766 ° elemento:

ListTemp[19766]
1.4509421012263216e-103

Se eu for mais longe

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

Portanto, esta lista teve um erro de memória no loop 1976

Questões

Existe um limite de memória para uma lista? É um "limite por lista" ou "limite global por script"?

Como contornar esses limites? Alguma possibilidade em mente?

Vai ajudar a usar numpy, python64? Quais são os limites de memória com eles? E quanto a outros idiomas?