字典序的k-排列
我正在尝试生成 k-排列(变体),并且希望它们按照字母顺序排列。举个例子,这段代码
import itertools
a = list('ABCD')
k = 2
for c in itertools.combinations(a, k):
for p in itertools.permutations(c):
print "".join(p),
会输出
AB BA AC CA AD DA BC CB BD DB CD DC
而我想要的是
AB AC AD BA BC BD CA CB CD DA DB DC
答案需要是可迭代的,所以 sort
这个方法不适用。
2 个回答
6
>>> ["".join(x) for x in itertools.permutations(a, k)]
['AB', 'AC', 'AD', 'BA', 'BC', 'BD', 'CA', 'CB', 'CD', 'DA', 'DB', 'DC']
当然可以!请把你想要翻译的内容发给我,我会帮你把它变得简单易懂。
9
你可以直接使用 permutations
,不需要用到 combinations
:
import itertools
a = 'ABCD'
k = 2
for p in itertools.permutations(a, k):
print "".join(p),