【发布时间】:2018-07-13 03:40:16
【问题描述】:
我正在努力为系统提供一份详尽的组件运行状态列表。我需要每个组件都有一个运行状态。我为每个操作状态开发了唯一的索引,格式为 component#-OS#,因此如果组件 1 具有三个操作状态,它们将是 1-1、1-2、1-3 等等。我想排除每个组件的重复操作状态,以便每个组件只存在一个。我正在使用 itertools 组合,但需要弄清楚如何以有效的方式合并排除项(我的问题比下面的示例问题要大得多):
from itertools import combinations
indices=["1-1", "1-2", "1-3", "2-1", "2-2", "3-1", "3-2", "4-1", "4-2", "4-3", "5-1", "5-2", "5-3"]
out=list(combinations(indices, 5))
正如现在所写,out 包含许多重复的操作状态,并且比我想要的要长得多。事后我可以轻松地将它们过滤掉,但这将是一项非常耗时的工作。当我把这个问题带到全面的问题上时,会有数亿种组合,所以我需要找到一种方法来有效地限制输出,使每个组件只包含一个操作状态。这可能涉及以某种方式修改组合函数,但我不确定从哪里开始。
有什么想法吗?
编辑
为了澄清,我希望得到以下表格的输出:
[1-1, 2-1, 3-1, 4-1, 5-1], [1-2, 2-1, 3-1, 4-1, 5-1]...[ 1-3、2-2、3-2、4-3、5-3]
【问题讨论】:
-
你的意思是
list(itertools.product(["1-1", "1-2", "1-3"], ["2-1", "2-2"], ["3-1", "3-2"], ["4-1", "4-2", "4-3"], ["5-1", "5-2", "5-3"]))? -
没有。该列表不是以这种方式组织的。我的数据框中的操作状态是分散的,而不是每个组件的时间顺序。我可以弄清楚如何以这种方式组织它们,如果它能让事情变得更容易的话..
-
这很简单,我只是在问这是否是您想要的输出。我不太明白你的描述。
-
我想要一个运行状态列表,每个组件都有一个唯一的操作系统。例如。 [1-1、2-1、3-1、4-1、5-1]、[1-1、2-1、3-1。 4-1, 5-2]等..
-
对,这听起来像是
product的结果。你能确认一下吗?
标签: python combinations itertools