从python列表中获取元素的唯一组合[重复]

Posted

技术标签:

【中文标题】从python列表中获取元素的唯一组合[重复]【英文标题】:Get unique combinations of elements from a python list [duplicate] 【发布时间】:2013-08-14 15:10:27 【问题描述】:

编辑: 这不是 How to get all possible combinations of a list’s elements? 的完全相同的副本

本主题是关于寻找唯一组合,而另一个主题是关于寻找所有组合。

如果我有一个 python 列表:

 L = [1,2,3,4]

从下面的列表中获取 3 个元素的所有可能的独特组合的最佳方法是什么:

["1,2,3", "1,2,4", "2,3,4", "3,4,1"]

组合中元素的顺序无关紧要。例如,"1,2,3""3,2,1" 将被视为相同的组合。

我可能可以编写几个循环来做到这一点,但我认为可能有一个单行可以做到这一点。

【问题讨论】:

【参考方案1】:

你需要itertools.combinations:

>>> from itertools import combinations
>>> L = [1, 2, 3, 4]
>>> [",".join(map(str, comb)) for comb in combinations(L, 3)]
['1,2,3', '1,2,4', '1,3,4', '2,3,4']

【讨论】:

有趣的是,这确实为您提供了基于可迭代位置的唯一组合,而不是基于值,如文档中所述,请参见例如: from itertools import combination L = [1, 2, 3, 4, 4] [",".join(map(str, comb)) for comb in combination(L, 3)]

以上是关于从python列表中获取元素的唯一组合[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中,从列表中删除重复项以使所有元素都是唯一的*同时保留顺序*的最快算法是啥? [复制]

从列表中获取唯一项目[重复]

Python:从数据框的列中获取唯一值的组合

如何从列表中创建唯一的非重复对组合

在PHP中查找数组元素的所有可能的唯一组合[重复]

如何从 Python 中的列表中获取具有相应出现次数的唯一值?