Python:打印列表的所有排列,同时保持顺序和顺序

问题描述 投票:0回答:1

问题如下:给定一个整数列表(1-n),在保持顺序和顺序的同时打印列表的所有排列。

例如:lst = [1,2,3](在这种情况下,n为3)

输出:

[1,2,3]
[1,2]
[2,3]
[1]
[2]
[3]

这里发生的事情是,最大的组首先被打印(包括直到n的所有整数),并且只有1,2,3被接受,因为它保持了顺序并且不改变顺序。接下来的两组。在这种情况下1,2和2,3。再次保持顺序。最后,1的组将是所有整数。

我不确定如何解决这个问题,因为它不同于打印所有排列,这将使2,1和3,2这样的情况可以接受;但是,这不能保持顺序。此外,将不接受1,3,因为1后面的数字是2。

任何帮助将不胜感激!

python math combinations permutation
1个回答
0
投票

此代码似乎对我有用:

for x in range(len(lst)):
    for y in range(x+1):
        print(lst[y:y+len(lst)-x])

或使用列表推导:

finalList = [lst[y:y+len(lst)-x] for x in range(len(lst)) for y in range(x+1)]

0
投票

您可以遍历所有可能的开始和结束索引:

lst = [1,2,3]
combo = []
for size in range(len(lst),0,-1):
  for start in range(len(lst)-size+1):
    combo.append(lst[start:start+size])
print(combo)

此输出:

[[1,2,3],[1,2],[2,3],[1],[2],[3]]
© www.soinside.com 2019 - 2024. All rights reserved.