Python列表自动化

2024-06-25 22:55:23 发布

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

下面的问题可能有点混乱,但我会尽量用最好的方式来解释。你知道吗

假设我们在一家制造公司工作。它制造的部件随后被用来制造产品。在下面的示例中,有3个组件和2个最终产品。你知道吗

零部件和产品的需求如下:

comp1 = 7
comp2 = 3
comp3 = 4
prod1 = 2
prod2 = 1
prod3 = 0

可以保存在字典中:

clst = {"comp": [comp1, comp2, comp3], "prod": [prod1, prod2, prod3]}

另一方面,为了制造最终产品,部件要求如下:

产品1需要:2 comp1,1 comp2,1 comp3

产品2需要:3 comp1,1 comp2,2 comp3

产品3需要:2 comp1,2 comp2,2 comp3

在字典中:

rprod = {0: [2,1,1], 1: [3,1,2], 2: [2,2,2]}

我需要得到预期的结果:

  lst=  [
            [1, 1, 1, 1, 1, 1, 1, -2, -2, -3],  
            [1, 1, 1, -1, -1, -1],    
            [1, 1, 1, 1, -1, -1, -2]   
        ]

输出后面的逻辑:

  1. 主列表有3个子列表,因为有3个组件。其思想是,每个子列表表示一种组件的输入和消耗

  2. 输入:子列表的第一个元素对应于生成的组件的单位。部件需求对应的次数必须记为“1”。 示例:让我们看看comp1的列表(第一个子列表),我们知道comp1的需求是7,所以子列表应该如下开始:

    输入=[1,1,1,1,1,1,1,1]

  3. 消费:现在我们需要将产品需求合并到子列表中,但是这些需求不是贡献(+),而是消费(-)。产品的需求是:

    产品1=2 产品2=1 prod3=0

我们还知道,产品消耗:

rprod = {0: [2,1,1], 1: [3,1,2], 2: [2,2,2]}
key 0 = prod 1 
key 1 = prod 2 
key 2 = prod 3

示例:产品comp1的消费清单为:

  Consumption =  [-2, -2, -3] 

等于[rprod[0][0], rprod[1][0], rprod[2][0]]

最后comp1的子列表将是Input+Consuption:

[1, 1, 1, 1, 1, 1, 1, -2, -2, -3]

有什么建议可以列出来吗?你知道吗


Tags: key示例列表字典产品部件组件prod
1条回答
网友
1楼 · 发布于 2024-06-25 22:55:23

我觉得没关系。这有点混乱,但希望你能理解

rprod = {0: [2,1,1], 1: [3,1,2], 2: [2,2,2]}

comp = [7, 3, 4]
flat_comp = [[1]*x for x in comp]  # [[1, 1, 1, 1, 1, 1, 1], [1, 1, 1], [1, 1, 1, 1]]

# turn prod into a list of rprod indices
prod = [2, 1, 0]
flat_prod = [i for i, x in enumerate(prod) for _ in range(x)]  # [0, 0, 1]

result = [[] for _ in range(len(comp))]
for i in range(len(comp)):
    result[i] = flat_comp[i]
    for production in flat_prod:
        result[i].append(-rprod[production][i])

print(result)  # [[1, 1, 1, 1, 1, 1, 1, -2, -2, -3], [1, 1, 1, -1, -1, -1], [1, 1, 1, 1, -1, -1, -2]]

相关问题 更多 >