大数据流计算

2024-04-16 08:49:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个非常大(比如几千个)的分区列表,比如:

[[9,0,0,0,0,0,0,0,0], 
[8,1,0,0,0,0,0,0,0], 
..., 
[1,1,1,1,1,1,1,1,1]]

我要做的是对它们每个应用一个函数(输出少量分区),然后将所有输出放在一个列表中并删除重复项

我可以做到这一点,但问题是,如果我把上面的列表直接放到python文件中(特别是滚动时),我的计算机会变得非常慢。是什么让它变慢了?如果是内存用来加载整个列表

有没有办法将分区放在另一个文件中,让函数逐项读取列表

编辑:我正在添加一些代码。我的代码可能效率很低,因为我是个业余爱好者。所以我真正拥有的是一个分区列表,我想添加到:

listofparts3 = [[[3],[2,1],[1,1,1]],
[[6],[5,1],...,[1,1,1,1,1,1]],...]

def addtolist3(n):
    a=int(n/3)-2
    counter = 0
    added = []
    for i in range(len(listofparts3[a])):
        first = listofparts3[a][i]
        if len(first)<n:
            for i in range(n-len(first)):
                first.append(0)
        answer = lowering1(fock(first),-2)[0]
        for j in range(len(answer)):
            newelement = True
            for k in range(len(added)):
                if (answer[j]==added[k]).all():
                    newelement = False
                    break
            if newelement==True:
                added.append(answer[j])
        print(counter)
        counter = counter+1
    for i in range(len(added)):
        added[i]=partition(added[i]).tolist()
    return(added)

fock,lowering1,partition都是早期代码中的函数,它们都是非常简单的函数。上面的函数,比如addtolist(24),获取我拥有的所有21分区,并返回所需的24分区列表,然后我可以将其附加到listofparts3的末尾


Tags: 函数代码answerin列表addedforlen