例如:
A = [1,2,3,4,5,6] # here n = 6# some iterative construct # in each iteration,a pair of subsets of size n/2 # subsets = [[1,4],[2,6]] for example for one of the iterations # subsets = [[1,5],[3,6]] a different iteration example
子集应该是非重叠的,例如,[[1,3],[4,6]]有效,但[[1,5]]不是.两个子集的顺序无关紧要,6]]不算与[[4,6],[1,3]]不同,因此这两个中只有一个应出现在迭代.每个子集内的顺序也无关紧要,6]],2],[[3]所有计数都相同,所以只有其中一个应该在整个迭代中出现.
解决方法 这是一个基于itertools的生成器,我认为它可以产生你想要的值.def sub_Lists(sequence): all_but_first = set(sequence[1:]) for item in itertools.combinations(sequence[1:],len(sequence)//2 - 1): yIEld [[sequence[0]] + List(item),List(all_but_first.difference(item))]
与Suever的答案中的基于排列的方法相比,我以两种方式避免了几乎重复的输出.首先,我避免同时产生[[“a”,“b”],[“c”,“d”]]和[[“c”,“d”],[“a”,“b”]]强制所有结果在第一个子列表中具有输入序列的第一个值.我通过构建第二个避免产生[[“a”,“d”]和[[“a”,[“d”,“c”]]使用set-subtraction的子列表.
请注意,产生嵌套元组可能比嵌套列表更自然.要做到这一点,只需将最后一行更改为:
yIEld (sequence[0],) + item,tuple(all_but_first.difference(item))总结
以上是内存溢出为你收集整理的python – N选择列表的N / 2个子列表全部内容,希望文章能够帮你解决python – N选择列表的N / 2个子列表所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)