繁体   English   中英

在python中操作itertools.permutations的输出

[英]manipulating the output of itertools.permutations in python

我想获取一个列表,例如List = [1,2,2] ,并生成其排列。 我可以这样做:

NewList = [list(itertools.permutations(List))]

输出是:

[[(1, 2, 2), (1, 2, 2), (2, 1, 2), (2, 2, 1), (2, 1, 2), (2, 2, 1)]]

问题: itertools.permutations返回一个长度为1的列表,其唯一的条目是List的所有排列的列表。 那是:

NewList[0] == [(1,2,2),(1,2,2),(2,1,2),(2,2,1),(2,1,2),(2,2,1)]

NewList[1]不存在。

我希望输出是一个列表,其中每个条目是一个排列。 那是

NewList[0] == (1,2,2)
NewList[1] == (1,2,2)
NewList[2] == (2,1,2)
...
NewList[5] == (2,2,1)

问题:是否有一个命令会以这种方式产生List的排列? 如果失败了,有没有办法访问[list(itertools.permutations(List))]的'个别元素',所以我可以用它们做事情?

>>> from itertools import permutations
>>> list(permutations([1,2,2]))
[(1, 2, 2), (1, 2, 2), (2, 1, 2), (2, 2, 1), (2, 1, 2), (2, 2, 1)]

您无需再次将其放入列表中。 即不要[list(permutations(...))] (通过执行[]你正在创建一个嵌套列表,因此无法使用testList[index]访问元素,尽管你可以做testList[0][index]但最好只保留它作为元组列表。)

>>> newList = list(permutations([1, 2, 2]))
>>> newList[0]
(1, 2, 2)
>>> newList[3]
(2, 2, 1)

现在,您可以使用索引访问元素。

为什么你不能这样做:

NewList = [list(itertools.permutations(List))][0]

甚至只是这个:

NewList = list(itertools.permutations(List))

通过执行[ list(itertools.permutations(List)) ] ,可以将排列列表(您想要的列表)放在另一个列表中。 所以解决方法是删除外部[]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM