2

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

4

3 回答 3

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)
于 2013-02-12T07:46:13.557 回答
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__()
于 2013-02-12T07:48:32.997 回答
0
from itertools import permutations

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

这应该可以完美地工作。

于 2021-02-27T07:45:02.083 回答