Python 生成器以特定长度、增量和最大值填充数组

问题描述

我正在努力寻找一种以特定长度、增量和最大值生成数组的方法

我下面的示例用数字填充 6 个桶,这些数字以 2 为增量加到 16。

我的问题是,我想展示多种方法来填充 6-10 个存储桶,例如最多 34、94、250 个。为了在输出中创建更合理数量的结果并且不超过可用内存,我需要将增量增加到 2 以上。我不知道如何使用我放在一起的生成器来做到这一点。

有人看到更好的方法解决这个问题吗?

import pandas as pd
class mygenerator:
    def __init__(self,itsize,itstep,nxtmaxval):
        self.itsize = itsize # Number of elements
        self.itstep = itstep # Step parameter
        self.nxtmaxval=nxtmaxval
    def __iter__(self):
        self.itvalue = None
        return self
    def __next__(self):
        if self.itvalue is None: # Initialization of the iterator.
            self.itvalue = [0]*(self.itsize)
        elif self.itvalue[0] ==self.nxtmaxval: #Exits here when equal to nxtmaxval.
            self.itvalue = None
            return None  
        while True: #Populates the output list.
            for i in range(self.itsize-1,-1,-1):
                if self.itvalue[i]<self.nxtmaxval:                       
                    self.itvalue[i] += self.itstep
                    break
                else:
                    self.itvalue[i] = 0
            if sum(self.itvalue) == self.nxtmaxval:                     
                break         
        return list(self.itvalue) #Return output list.

g=[]
myiter = iter(mygenerator(itsize=6,itstep=2,nxtmaxval=16))
for i in myiter:
    if i is None:
        break
    else:
        g.append(i)

pd.DataFrame(g)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...