首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中操作itertools.permutations的输出

在python中操作itertools.permutations的输出
EN

Stack Overflow用户
提问于 2013-07-31 14:34:51
回答 2查看 1.7K关注 0票数 3

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

代码语言:javascript
复制
NewList = [list(itertools.permutations(List))]

产出如下:

代码语言:javascript
复制
[[(1, 2, 2), (1, 2, 2), (2, 1, 2), (2, 2, 1), (2, 1, 2), (2, 2, 1)]]

问题:itertools.permutations返回长度为1的列表,该列表的唯一条目是列表的所有排列。这就是:

代码语言:javascript
复制
NewList[0] == [(1,2,2),(1,2,2),(2,1,2),(2,2,1),(2,1,2),(2,2,1)]

NewList[1]不存在。

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

代码语言:javascript
复制
NewList[0] == (1,2,2)
NewList[1] == (1,2,2)
NewList[2] == (2,1,2)
...
NewList[5] == (2,2,1)

问题是:是否有一个命令会以这种方式产生列表的排列?如果做不到这一点,是否有一种方法可以访问[list(itertools.permutations(List))]的“单独元素”,这样我就可以使用它们完成任务了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-31 14:36:14

代码语言:javascript
复制
>>> 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],但最好将其保留为元组列表)。

代码语言:javascript
复制
>>> newList = list(permutations([1, 2, 2]))
>>> newList[0]
(1, 2, 2)
>>> newList[3]
(2, 2, 1)

现在,您可以通过使用元素的索引来访问它们。

票数 4
EN

Stack Overflow用户

发布于 2013-07-31 14:36:22

为什么你不能这样做:

代码语言:javascript
复制
NewList = [list(itertools.permutations(List))][0]

甚至只是这个:

代码语言:javascript
复制
NewList = list(itertools.permutations(List))

通过执行[ list(itertools.permutations(List)) ],您可以将排列列表(您想要的排列列表)放入另一个列表中。因此,修复方法是移除外部[]

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17973328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档