数据列表中的最后一个条目未正确设置为pythons 2D数组中最小数组位置的索引

问题描述

我写了一个Python类( NRowsNTierShip ),该类应该代表集装箱船。 此类由插入函数组成,该函数对列表进行迭代,并将该列表的所有值插入二维数组(表示飞船)中。该值应放在总权重最小的行的免费层中。
权重最低的行和下一层由函数 get_next_postion 返回。
到目前为止,还算不错,但是使用 insert 函数在上一次运行时,它会覆盖已经分配的空间,并且不会将最后一个容器放置在该容器中。

实际上它应该看起来像这样:

 1  7  9 12
 2  6 10 11
 3  4  5  8

但是看起来像这样:

 1  7  9  0 
 2  6 10 11 
 3  4  5 12 

这带给我我的实际问题,有人可以告诉我为什么会这样,并给我改善的建议吗?

提前感谢您的回答!

船级:

class NRowsNTieRSShip:
    def __init__(self,rows: int,tiers: int):
        self.rows: int = rows
        self.tiers: int = tiers

        self.bay: list = [
            [
                Container(0,0) for _ in range(self.tiers)
            ] for _ in range(self.rows)
        ]

    def __repr__(self):
        res: list = []
        for row,data in enumerate(self.bay):
            for tier,container in enumerate(self.bay[row]):
                res.append('%2d ' % container.number)
            res.append('\n')
        return ''.join(res)

    def _get_next_position_(self):
        min_row,tier_list = min(enumerate(self.bay),key=lambda x: sum(y.weight for y in x[1]))
        mintier = min(range(len(tier_list)),key=lambda x: tier_list[x].weight)
        return min_row,mintier

    def insert(self,data: list):
        for container_list in data:
            min_row,min_tier = self._get_next_position_()
            self.bay[min_row][min_tier]: Container = Container(*container_list)

执行者:

def test(rows: int,tiers: int,data: list):
    ship: NRowsNTieRSShip = NRowsNTieRSShip(rows=rows,tiers=tiers)
    ship.insert(data=data)
    print(ship)


if __name__ == '__main__':
    sample_container_list: list = [
        [1,23],[2,22],[3,11],[4,10],[5,9],[6,[7,8],[8,[9,[10,7],[11,[12,6]
    ]

    test(rows=3,tiers=4,data=sample_container_list)

解决方法

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

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

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