Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取有序列表的所有有序子列表_Python_List_Sorting - Fatal编程技术网

Python 获取有序列表的所有有序子列表

Python 获取有序列表的所有有序子列表,python,list,sorting,Python,List,Sorting,我们正在努力解决以下问题: 例如,以下列表应按相同顺序划分为m列表 假设[9,7,6,5,2,10,8,4,3,1]带有m=3 一些最终结果应该是: [[9],[7,6],[5,2,10,8,4,3,1]] [[9,7],[6,5,2,10,8,4,3],[1]] [[9,7,6,5],[2,10,8,4],[3,1]] 等等 我如何实现它?解决方案: n=列表的长度 k=m=3 def部件(n,k): def_零件(n、k、pre): 如果n您尝试了什么,会出现什么错误?请参阅此解决方案@p

我们正在努力解决以下问题:
例如,以下列表应按相同顺序划分为
m
列表

假设
[9,7,6,5,2,10,8,4,3,1]
带有
m=3
一些最终结果应该是:

[[9],[7,6],[5,2,10,8,4,3,1]]
[[9,7],[6,5,2,10,8,4,3],[1]]
[[9,7,6,5],[2,10,8,4],[3,1]]
等等

我如何实现它?

解决方案:

n=列表的长度

k=m=3

def部件(n,k):
def_零件(n、k、pre):

如果n您尝试了什么,会出现什么错误?请参阅此解决方案@prashantrana此解决方案不考虑顺序。@Stijin这是提示。创建一个大小为3的嵌套列表,并使用此链接将值放入其中。您的问题是什么?我可以读到你将要声明它,但是你从一个例子开始。感谢这个解决方案,但是你知道如何使用itertools.combines吗?这样我们就可以从中获得所有可能的组合?因为我试了很多次,但是没有考虑顺序。嘿,我已经更新了代码,可以打印所有可能的输出。这非常有用!谢谢
def part(n, k):
 def _part(n, k, pre):
    if n <= 0:
        return []
    if k == 1:
        if n <= pre:
            return [[n]]
        return []
    ret = []
    for i in range(min(pre, n), 0, -1):
        ret += [[i] + sub for sub in _part(n-i, k-1, i)]
    return ret
 return _part(n, k, n)

import itertools
perm=[]
partitions=part(n, m)
for i in partitions:
    perm.append(list(itertools.permutations(i,m)))
perm1=list(itertools.chain.from_iterable(perm))  
y= [9,7,6,5,2,10,8,4,3]
new=[]
for i in perm1:
   k=0
   for j in i:
       new.append(list(y[k:k+j]))
       k=k+j
       if k==9:
         print(new)
         new=[]
from itertools import combinations, permutations


perm=[]
index = [9,7,6,5,2,10,8,4,3,1]
perm.append(index)
M = 3
slicer = [x for x in combinations(range(1, len(index)), M - 1)]
slicer = [(0,) + x + (len(index),) for x in slicer]

result = [tuple(p[s[i]:s[i + 1]] for i in range(len(s) - 1)) for s in slicer for p in perm]