【问题标题】:Permutations in alphabetical order按字母顺序排列
【发布时间】:2014-04-29 00:24:17
【问题描述】:

我想获得从 AAAA 到 ZZZZ 的每个排列的列表,并且我希望该列表按字母顺序排列。我该怎么做?

【问题讨论】:

标签: permutation itertools


【解决方案1】:

你可以这样解决:

alphabet = [chr(item) for item in xrange(ord('A'), ord('Z')+1)]

创建从大写 A 到大写 Z 的字母表。

perms    = itertools.product(alphabet, repeat = 4)

创建一个生成器,它将生成从 'AAAA''ZZZZ' 的所有 4 字符排列

results  = sorted((''.join(item) for item in perms))

按字母顺序对结果进行排序(注意product 返回一个由 4 个字符组成的元组,因此我们需要将它们与join 结合起来)。

【讨论】:

    【解决方案2】:

    在 python 标准库中,有用于高效循环的迭代器函数,名称为 itertools。 itertools 有排列生成器。

    置换函数需要两个参数,一个是可迭代的,另一个是长度,例如如果可迭代是“ABC”并且长度是 2 那么 (A,B) (A,C) (B,A) (B,C ) (C,A) (C,B) 是此函数的结果。 生成排列

    【讨论】:

    • 1) 正如标签所示,OP 知道 itertools。他们不知道如何使用它,所以笼统的描述不是很有帮助。 2)正如2014年(!)的答案所指出的那样,这个问题与排列无关。他们正在寻找笛卡尔积。答案应该反映这一点。
    猜你喜欢
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    相关资源
    最近更新 更多