【发布时间】:2019-03-06 09:56:12
【问题描述】:
如何在没有 itertools.combinations 的情况下在 Python 中生成列表的递增排列:
我正在尝试创建一个函数,该函数将生成列表的所有排列,但仅限于 len(n) 集,并且只能从左到右增加。例如,如果我有列表 l = [2,4,5,7,9] 和 n=4,结果应该包括 [2,4,5,7], [2,4,7,9], [ 2,5,7,9] 但不是 [9,7,4,2], [9,4,7,2]。这是我到目前为止所做的:
def permutation(lst):
if len(lst) == 0:
return []
if len(lst) == 1:
return [lst]
l = []
for i in range(0, len(lst)):
m = lst[i]
new = lst[:i] + lst[i+1:]
for p in permutation(new):
l.append([m] + p)
return l
测试:
data = list([1,2,3,4,5,6])
for p in permutation(data):
print p
【问题讨论】:
-
这是为了上课,还是你可以use
itertools.combinations?即使您不能使用itertools.combinations本身,它的文档也包含两个不同的 Python 实现,可以达到相同的效果。 -
不要删除你的代码;表现出努力是好的问题与“为我做作业”问题的区别。
标签: python algorithm combinations permutation