【发布时间】:2014-04-29 00:24:17
【问题描述】:
我想获得从 AAAA 到 ZZZZ 的每个排列的列表,并且我希望该列表按字母顺序排列。我该怎么做?
【问题讨论】:
-
这显然与排列无关,请咨询en.wikipedia.org/wiki/Twelvefold_way以使用正确的术语。
标签: permutation itertools
我想获得从 AAAA 到 ZZZZ 的每个排列的列表,并且我希望该列表按字母顺序排列。我该怎么做?
【问题讨论】:
标签: permutation itertools
你可以这样解决:
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 结合起来)。
【讨论】:
在 python 标准库中,有用于高效循环的迭代器函数,名称为 itertools。 itertools 有排列生成器。
置换函数需要两个参数,一个是可迭代的,另一个是长度,例如如果可迭代是“ABC”并且长度是 2 那么 (A,B) (A,C) (B,A) (B,C ) (C,A) (C,B) 是此函数的结果。 生成排列
【讨论】: