如何使用itertools中的组合对象来查找我要输入的字符串的每个排列?

时间:2014-05-26 19:14:04

标签: python permutation itertools

我的代码

from itertools import permutations

original = input('What word would you like to unscramble?: ')

notSoOriginal = permutations(original)

print(notSoOriginal)

每当我输入"原文"变量,它返回

<itertools.permutations object at 0x02DCC6C0>

我将在此处更改以获取&#34;原始&#34;的输入字符串并打印出所有可能的角色重新排列?我也在运行Python 3.3,如果这有所不同。

2 个答案:

答案 0 :(得分:1)

您正在寻找:

print([''.join(tup) for tup in permutations(original)])

permutations返回包含original的所有排列(例如('t', 'e', 'n'), ('t', 'n', 'e'), ...)的元组的迭代器(不是列表)。因此,您需要迭代迭代器,并将每个元组连接到一个字符串。

答案 1 :(得分:1)

DSM(在评论中)是正确的,您需要permutations而不是combinations

至于您报告的问题 - 与itertools模块中的其他内容一样,permutationscombinations返回iterators。所以,你可以迭代结果:

for permuted in permutations(original):
    print(permuted)

...或将其转换为列表:

print(list(permutations(original)))