python - Python列表自动化
问题描述
以下问题可能有点令人困惑,但我会尽量以最好的方式解释它。
假设我们为一家制造公司工作。它制造的组件然后用于制造产品。在以下示例中,有 3 个组件和 2 个最终产品。
组件和产品的需求如下:
comp1 = 7
comp2 = 3
comp3 = 4
prod1 = 2
prod2 = 1
prod3 = 0
可以保存在字典中:
clst = {"comp": [comp1, comp2, comp3], "prod": [prod1, prod2, prod3]}
另一方面,要制造最终产品,对组件的要求如下:
prod1 需要:2 个 comp1、1 个 comp2、1 个 comp3
prod2 需要:3 个 comp1、1 个 comp2、2 个 comp3
prod3 需要: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]
]
输出背后的逻辑:
主列表有 3 个子列表,因为有 3 个组件。这个想法是每个子列表代表一种组件的输入和消耗
输入:子列表的第一个元素对应于生产的组件单元。对应组件需求的次数必须写“1”。 示例:让我们看看 comp1 的列表(第一个子列表),我们知道 Comp1 的需求是 7,所以子列表应该如下开始:
输入 = [1, 1, 1, 1, 1, 1, 1]
消费:现在我们需要将产品需求合并到子列表中,但是这些不是贡献(+),而是消费(-)。产品需求如下:
产品 1 = 2 产品 2 = 1 产品 3 = 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]
有什么建议可以列出清单吗?
解决方案
我认为没关系。这有点混乱,但希望你能明白
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]]
推荐阅读
- opengl - 对于 OpenGL,客户端 API 版本号是 OpenGL 版本号吗?
- javascript - 将 javascript 字符串传递给 std::string 打印垃圾值
- angular - 角度动态控件在编辑中具有反应形式问题以及如何更新值
- python-3.x - 通过 API 以递归方式下载产品 + 将其存储在 Postgres -> 每次递归都会消耗更多 RAM。递归后如何清除RAM?
- r - 突出显示单击并暗淡其余部分
- mysql - 使用主查询的结果作为子查询中的列名
- sql - 在 postgres 中打印系列
- amazon-web-services - 如何在 ELK 中查看 X 射线轨迹?
- uwp - 如何为通过 Microsoft Store 部署的 uwp 应用启用 Apps For Websites API?
- java - Spring Boot 中不需要的转换