python - python中枚举所有组合并返回索引的最快方法

标签 python combinations

很难在标题中描述我的问题。我觉得这个问题的标题不太好。我的问题如下

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

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

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

有没有快速实现这一目标的方法?我想我需要使用库 itertools,但不确定我应该使用哪个特定函数

最佳答案

这是您要找的吗?

from itertools import combinations    
num_ones = 3
slots = 5
comb_indices = list(combinations(range(5),3))
print comb_indices

[(0, 1, 2), (0, 1, 3), (0, 1, 4), (0, 2, 3), (0, 2, 4), (0, 3, 4), ( 1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]

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

相关文章:

matlab - 如何找到成对集合的所有组合

python - 列表中带有 "distance limit"的独特组合

python smtpd.SMTP服务器 : How to send reply message in process_message?

python - 没有名为 flaskext.mysql 的模块

python - 如何在Python中根据另一个集合对一个集合进行排序?

javascript - 生成完整(所有大小)的数组组合

java - 生成所有可能的项目组合

r - 如何创建子集的组合,使得最终集合没有重复元素

python - 如何覆盖 Python 对象的复制/深度复制操作?

python - 多索引数据帧行替换