太多的静态嵌套块python [英] too many statically nested blocks python

查看:124
本文介绍了太多的静态嵌套块python的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正尝试在文本文件的列中写入21个以上的列表,其中包含相同数量的项目.

I'm trying to write more than 21 lists containing the same number of items to columns in a text file.

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

如何将每个列表写入文本文件中的列?例如

How can I write each list to a column in a text file? e.g.

 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

推荐答案

静态嵌套的块太多",当嵌套的块超过20个时,您将遇到此错误.

"too many statically nested blocks", You will encounter this error when you nest blocks more than 20.

这是python解释器的设计决策,将其限制为20个. Python使用称为 blockstack 的特殊堆栈来执行代码块,例如异常和循环.该堆栈大小限制为20.

This is a design decision of python interpreter to restrict it to 20. Python uses a special stack called blockstack to execute code blocks, such as exception and loops. This stack size is limited to 20.

不过,可以在您的上下文中使用以下代码.

Though, the following code can be used in your context.

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

此代码将嵌套减少了3级.

This code reduces your nesting by degree of 3.

这篇关于太多的静态嵌套块python的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆