Dam*_*en 1 python permutation python-itertools
我希望使用itertools从字母表中的每个字母获得所有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)
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
jam*_*lak 10
你有点混淆,这只是代码解释是什么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')
.....
Run Code Online (Sandbox Code Playgroud)
这应该工作正常
itertools.permutations文档中的代码说明了如何实现该功能,而不是如何使用它.你想这样做:
perms = itertools.permutations('ABCDEFGHIJKLMNOPQRSTUVWXYZ', r=3)
Run Code Online (Sandbox Code Playgroud)
您可以通过将它们转换为列表(print(list(perms)))来打印它们,但for如果您想对它们执行其他操作,则可以在循环中迭代它们 - 例如,
for perm in perms:
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9551 次 |
| 最近记录: |