python3中的排列

时间:2013-02-12 07:22:56

标签: python-3.x itertools

我无法弄清楚如何获得排列以返回实际的排列而不是   我尝试了很多不同的东西但无济于事。我使用的代码来自itertools import permutations,然后是排列([1,2,3])。谢谢!

3 个答案:

答案 0 :(得分:2)

这可能没有回答你的问题(它似乎在'而不是'之后缺少部分),但是从你的代码中,你可能看到的是repr迭代器的itertools.permutations 。您可以像访问普通列表一样遍历此对象,以便访问所有项目。如果要将其转换为列表,可以将其包装在list

>>> from itertools import permutations
>>> permutations([1, 2, 3])
<itertools.permutations object at 0x1e67890>
>>> list(permutations([1, 2, 3]))
[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]

但是如上所述,迭代器可以像普通列表一样进行迭代(返回迭代器的好处是整个序列不会立即加载到内存中 - 而是根据需要加载') :

>>> for perm in permutations([1, 2, 3]):
...     print(perm)
... 
(1, 2, 3)
(1, 3, 2)
(2, 1, 3)
(2, 3, 1)
(3, 1, 2)
(3, 2, 1)

答案 1 :(得分:0)

itertools.permutations是一个生成器,这意味着你必须使用它来检索它的结果:

for permutation in itertools.permutations([1,2,3]):
   do_stuff_with(permutation)

或者将所有这些都放在一个列表中:

list(itertools.permutations([1,2,3]))

或者,不太方便:

generator = itertools.permutations([1,2,3])
generator.__next__()

答案 2 :(得分:0)

from itertools import permutations

#iteration
for p in permutations([1,2,3]):
    print(p)

这应该可以完美运行。