很难在标题中描述我的问题。我认为这个问题的标题不是很好。我的问题是以下

假设我有一个列表[0,0,0,0,0],我想在列表的这5个插槽中放入3个。我想列举所有可能的组合。在这种情况下,它将是5选择3,即10,例如,

[1,1,1,0,0]
[1,0,1,0,1]
....


我希望最终获得一个列表列表,以便大列表中的每个元素(仍然是列表)在每种情况下存储这些元素的索引,例如,在上面的示例中,最后一个大元素中的第一个元素list应该是[0,1,2],最后一个大列表中的第二个元素应该是[0,2,4] ...

是否有实现此目标的快速方法?我想我需要使用库itertools,但不确定应该使用哪个特定功能

最佳答案

使用itertools.combinations

要获得所有可能的长度为3的二进制列表3

N = 5
zeros = [0]*N
for comb in itertools.combinations(range(N), r = 3):
    l = zeros.copy()
    for indice in comb:
        l[indice] = 1


效率不是很高,但是应该足够快。

要获取索引的“大列表”,请使用itertools.combinations(range(5), 3))

关于python - python中枚举所有组合并返回索引的最快方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38040946/

10-12 23:14