我想使用迭代工具从字母表中的每个字母中获取所有可能的 3 个字母排列。这返回为空白:
import itertools
def permutations(ABCDEFGHIJKLMNOPQRSTUVWXYZ, r=3):
pool = tuple(iterable)
n = len(pool)
r = n if r is None else r
for indices in product(range(n), repeat=r):
if len(set(indices)) == r:
yield tuple(pool[i] for i in indices)
我做错了什么?
你有点混淆了,这只是解释permutations
做什么的代码。 itertools
实际上是用 C 代码编写的,python 等价物只是为了展示它是如何工作的。
>>> from itertools import permutations
>>> from string import ascii_uppercase
>>> for x in permutations(ascii_uppercase, r=3):
print x
('A', 'B', 'C')
('A', 'B', 'D')
('A', 'B', 'E')
('A', 'B', 'F')
.....
那应该可以正常工作
> itertools.permutations
文档中的代码解释了函数是如何实现的,而不是如何使用它。您要执行此操作:
perms = itertools.permutations('ABCDEFGHIJKLMNOPQRSTUVWXYZ', r=3)
您可以通过将其转换为列表(print(list(perms))
)将它们全部打印出来,但是如果您想对它们执行其他操作,则可以在for
循环中迭代它们 - 例如,
for perm in perms:
...