我正在尝试按字典顺序(按字母顺序)生成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
不是一个选项。
答案 0 :(得分:9)
您可以在没有permutations
的情况下使用combinations
:
import itertools
a = 'ABCD'
k = 2
for p in itertools.permutations(a, k):
print "".join(p),
答案 1 :(得分:6)
>>> ["".join(x) for x in itertools.permutations(a, k)]
['AB', 'AC', 'AD', 'BA', 'BC', 'BD', 'CA', 'CB', 'CD', 'DA', 'DB', 'DC']