我无法弄清楚如何获得排列以返回实际的排列而不是 我尝试了很多不同的东西但无济于事。我使用的代码来自itertools import permutations,然后是排列([1,2,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)
这应该可以完美运行。