我想获取一个列表,例如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))]
的“个别元素”,以便我可以用它们做些什么?
答案 0 :(得分:3)
>>> 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)
现在,您可以使用索引访问元素。
答案 1 :(得分:0)
为什么你不能这样做:
NewList = [list(itertools.permutations(List))][0]
甚至只是这个:
NewList = list(itertools.permutations(List))
通过执行[ list(itertools.permutations(List)) ]
,您可以将排列列表(您想要的列表)放在另一个列表中。因此,修复方法是删除外部[]