【发布时间】:2016-05-02 14:55:22
【问题描述】:
l = ['A', 'B', 'C', 'D']
我想按顺序排列所有组合。所以输出应该是这样的,
['ABCD', 'ABC', 'AB', 'A', 'BCD', 'BC', 'B', 'CD', 'C', 'D']
我试过的是..
>>> o = set()
>>> for i, j in enumerate(l):
o.add(''.join(l[:i]))
o.add(''.join(l[i:]))
>>>
>>> o
set(['', 'ABCD', 'AB', 'D', 'BCD', 'CD', 'ABC', 'A'])
但它错过了BC。还尝试了itertools.combinations,但它提供了所有可能的组合,而与顺序无关。
【问题讨论】:
-
准确地说,你错过了
'B', 'C'和'BC' -
@Antonio ??我加了。
-
您的问题类似于this,但输出立即排序?
-
标准方式是递归。您采用长度为 1 的组合并将其他字符放在两侧。然后你把这些字符放在它们之间。
-
@Antonio 我在他们的回答中看到了
(1, 3)。
标签: python