简体   繁体   English

按字典顺序排列的k-排列

[英]k-permutations in lexicographical order

I'm trying to generate k-permutations (variations) in lexicographical (alphabetical) order. 我正在尝试以字典(按字母顺序)顺序生成k-排列(变体)。 For example, this code 例如,这段代码

import itertools

a = list('ABCD')
k = 2

for c in itertools.combinations(a, k):
    for p in itertools.permutations(c):
        print "".join(p),

prints 版画

AB BA AC CA AD DA BC CB BD DB CD DC

and I'm looking for 而我正在寻找

AB AC AD BA BC BD CA CB CD DA DB DC

The answer needs to be iterable, so sort is not an option. 答案需要是可迭代的,因此sort不是一种选择。

You can just use permutations without combinations : 你可以只使用没有combinations permutations

import itertools

a = 'ABCD'
k = 2

for p in itertools.permutations(a, k):
    print "".join(p),

See also: 也可以看看:

>>> ["".join(x) for x in itertools.permutations(a, k)]
['AB', 'AC', 'AD', 'BA', 'BC', 'BD', 'CA', 'CB', 'CD', 'DA', 'DB', 'DC']

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM