demasiados bloques estáticamente nesteds python

Estoy intentando escribir más de 21 listas que contienen la misma cantidad de elementos en columnas en un archivo de texto.

import random a=[] b=[] .... q=[] for i in range(200): a.append(random.gauss(10,0.1)) b.append(random(20,0.5)) .... q.append(random.gauss(50,0.2) for aVal in a: for bVal in b: .... for qVal in q: print(aVal, "\t ", bVal, ", ", .... , qVal) .... SystemError: too many statically nested blocks 

¿Cómo puedo escribir cada lista en una columna en un archivo de texto? p.ej

  0.892550 0.872493 0.206032 2.528080 0.722350 0.303438 0.176304 2.436103 0.875931 0.717765 0.144785 2.583095 0.890831 0.411748 0.124370 2.540974 0.764183 0.728080 0.128309 2.506590 0.831232 0.545845 0.130100 2.517765 0.754441 0.826074 0.208539 2.604585 0.707450 0.367049 0.198868 2.503152 0.736103 0.554441 0.097865 2.563324 0.792837 0.808883 0.179527 2.526361 0.719484 0.690258 0.215344 2.643266 0.788252 0.824355 0.189198 2.455874 

Use zip , que además de evitar el error imprimirá una línea por grupo de valores, no un conjunto de líneas para cada valor en el bucle adjunto.

 for aVal, bVal, ..., qVal in zip(a, b, ..., q): print(aVal, "\t ", bval, ", ", ..., qval) 

“demasiados bloques nesteds estáticamente”, encontrará este error cuando anide bloques más de 20.

Esta es una decisión de diseño del intérprete de Python para restringirla a 20. Python usa una stack especial llamada blockstack para ejecutar bloques de código, como la excepción y los bucles. Este tamaño de stack está limitado a 20.

Sin embargo, el siguiente código se puede utilizar en su contexto.

 lst1 = [1, 11, 111] lst2 = [2, 22, 222] lst3 = [3, 33, 333] lst4 = [4, 44, 444] lst5 = [5, 55, 555] lst6 = [6, 66, 666] def lamlist(l1, l2, l3): funs = [] for i in l1: for j in l2: for k in l3: x = lambda i=i, j=j, k=k: (i,j,k) funs.append(x) return funs #def lamlist(l1, l2, l3): # return [lambda i=i, j=j, k=k: (i, j, k) for i in l1 for j in l2 for k in l3] funlist = [lamlist(lst1, lst2, lst3), lamlist(lst4, lst5, lst6)] for f1 in funlist[0]: a, b, c = f1() for f2 in funlist[1]: d, e, f = f2() print a, b, c, d, e, f 

Este código reduce su anidamiento en grado de 3.