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模块的函数),打乱列表元素的顺序/如何对列表元素进行随机排列