python - k-字典序排列

标签 python iterator combinatorics

我正在尝试按字典顺序(字母顺序)生成 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 不是一个选项。

最佳答案

您可以只使用排列而不使用组合:

import itertools

a = 'ABCD'
k = 2

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

另见:

关于python - k-字典序排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8341963/

相关文章:

c++ - 如何在 C++ 中将 vector 迭代器转换为 int

r - expand.grid 的非冗余版本

algorithm - 如何找到覆盖另一个列表中所有元素所需的最小列表数

python - Panda python 文本文件处理成 xlsx

python - Python 猜数字中的重新启动选项

java - 以最少的内存使用遍历 Java 中的许多文件

c++ - 使用迭代器从文件中读取二进制整数列表

algorithm - 在矩阵中查找 k 组不相交的行

python - 扭曲的 python - tac 还是 py?

python - 使用 Db 数据填充 Django 表单字段数据