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