我有一组值,想创建包含 2 个元素的所有子集的列表。
例如,源集 ([1,2,3])
具有以下 2 元素子集:
set([1,2]), set([1,3]), set([2,3])
有没有办法在 python 中做到这一点?
原文由 John Manak 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一组值,想创建包含 2 个元素的所有子集的列表。
例如,源集 ([1,2,3])
具有以下 2 元素子集:
set([1,2]), set([1,3]), set([2,3])
有没有办法在 python 中做到这一点?
原文由 John Manak 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是 {1, 2, 3}
的 幂集 的子集(或任何包含所有二元素集的集合)。
请参阅 Python itertools
文档 并搜索术语“powerset”以获得此问题的一般答案。
原文由 Alex Reynolds 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
好像你想要
itertools.combinations
:如果你想要集合,你必须明确地转换它们。如果您不介意使用可迭代对象而不是列表,并且您使用的是 Python 3,则可以使用
map
:要一次查看所有结果,您可以将
map
的输出传递给list
。 (在 Python 2 中,map
的输出自动是一个列表。)但是,如果您知道您需要一个列表,那么列表理解会稍微好一些(h/t Jacob Bowyer ):