【发布时间】:2012-02-12 22:00:29
【问题描述】:
接着这个问题Algorithm to generate (not quite) spanning set in Python
给定列表中的 n 个项目,例如 n = 7,因此输入:[1,2,3,4,5,6,7]
我想在 python 中生成这组集合:
[1] [2] [3] [4] [5] [6] [7]
[1] [2] [3] [4] [5] [6, 7]
[1] [2] [3] [4] [5, 6, 7]
...
...
[1, 2, 3, 4, 5] [6, 7]
但不是:
[1, 2, 3, 4, 5, 6] [7]
or
[1, 2, 3, 4, 5, 6, 7]
从上一个问题我有一个很好的答案:
def span(lst):
yield [lst]
for i in range(1, len(lst)):
for x in span(lst[i:]):
yield [lst[:i]] + x
是否可以在现有代码中工作以产生更具体的输出
谢谢
【问题讨论】:
-
“特定输出”是什么意思?你的意思是你想要确切的顺序,并且你想过滤掉它产生的第一个和最后一个列表?
-
希望过滤掉那些包含超过 5 个单位的子集的集合。我所说的“特定输出”只是指它被过滤以排除那些具有六个或更多单元子集的集合。