带有可选值的python顺序

时间:2018-11-19 19:18:02

标签: python sequence

寻找一些帮助来生成一些代码以基于永久值和可选值创建所有可能的序列的帮助。例子...

序列保存在MySQL Db中,每个值可以是可选的

例如,有一个序列返回以下顺序

1,2,3,4

1和2是必需的 3和4是可选的

因此,结果将返回以下序列可能性: [1,2],[1,2,3,4],[1,2,3],[1,2,4]

然后我可以将一个序列与那些序列进行比较,以确保接收到的序列与它应该的顺序相匹配。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您实际上只对“可选”序列的超集感兴趣。您可以通过找到此超集并将其每个成员附加到“必需”列表中来获得输出。

from itertools import combinations

required = [1, 2]
optional = [3, 4]

superset_optional = [combinations(optional, i) for i in range(len(optional) + 1)]
for combinations in superset_optional:
    for comb in combinations :
        print(required + list(comb))

#  [1, 2]
#  [1, 2, 3]
#  [1, 2, 4]
#  [1, 2, 3, 4]