Python:如何获得子集排列的列表?

Posted

技术标签:

【中文标题】Python:如何获得子集排列的列表?【英文标题】:Python: How do I get a list of permutations of subsets? 【发布时间】:2013-04-09 14:10:13 【问题描述】:

假设我有以下列表:

L = [1, 2, 3]

我想得到以下输出:

[[1], [2],[3]]
[[1], [2, 3]]
[[2], [1, 3]]
[[3], [1, 2]]

除了我什至不确定我是否正确地表达了这个问题。它基本上就像不重复的排列组?

【问题讨论】:

我相信他想做的就是把所有的排列都用循环表示法。 您在寻找类似 powerset 的东西吗? docs.python.org/2/library/itertools.html#recipes 我想我可以编写一个程序来生成你的确切输出,但我不明白你是如何得到你的输出的......你能解释一下吗? 【参考方案1】:

我不太清楚你是如何得出你的输出的(另一个例子或更好的描述可能会有所帮助),但答案可能在于itertools,其中包含许多用于处理组合和排列的工具:

>>> data = [1, 2, 3]
>>> list(zip(reversed(data), itertools.combinations(data, 2)))
[(3, (1, 2)), (2, (1, 3)), (1, (2, 3))]

【讨论】:

获得否决票的理由会很有用 - 虽然我同意这可能不是完美的答案,但考虑到问题的模棱两可,这是最好的。这绝对不是“没用”。

以上是关于Python:如何获得子集排列的列表?的主要内容,如果未能解决你的问题,请参考以下文章

获得列表中重复次数最多的名称,如果出现平局,则按字母顺序排列第一个

从 Python 列表中删除列表子集的最快方法

Python面试必考重点之列表,元组和字典第四关——编写一个函数(不要使用python模块的函数),打乱列表元素的顺序/如何对列表元素进行随机排列

在python中使用索引创建一个包含列表子集的新列表

python语句中合并两个列表并且将列表中的数安大小排列

(Python)numpy 常用操作