首页 > 解决方案 > 如何找到python中每个有效k的所有元素组合?

问题描述

假设我想找到元素的所有可能组合(不是 nCk 给出的可能组合的数量,而是组合本身。)此外,假设我对给定所有可能的 k 的所有可能组合感兴趣。例如

elems = [a,b,c,d] #k=1
com_2 = [(a,b),(a,c),(a,d),(b,c),(b,d),(c,d)] #k=2
com_3 = [(a,b,c),(a,b,d),(a,c,d),(b,c,d)] #k=3
com_4 = [(a,b,c,d)] #k=4

我想知道,是否有一个内置的python函数可以做到这一点?(可能是 set 类的一部分。)如果不是,您将如何编写函数来实现此效果?

elems = ['a','b','c','d']
sets = []
for idx1 in range(len(elems)):
  for idx2 in range(idx1+1, len(elems)):
    sets.append((elems[idx1],elems[idx2]))

sets
>>>
[('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd'), ('c', 'd')]

这仅适用于 k=2,当 k 较大时,我需要动态添加另一个 for 循环。这让我认为递归可能是合适的,但我完全不知道如何前进。

这个问题似乎暗示了正确的方向,虽然我不是 C++ 程序员,所以我一点也不清楚。

编辑:偶然发现如何获得列表元素的所有可能组合?这回答了我的问题。随意关闭,模组

标签: pythoncombinationscombinatorics

解决方案


推荐阅读