首页 > 解决方案 > itertools.combinations() 是确定性的吗?

问题描述

从 itertools.combinations() 获得的项目的顺序是否确定?

我目前正在编写一个脚本,该脚本使用 itertools.combinations 生成大量对象,足够大,以至于我无法将其全部保留在内存中。对于每种组合,都有一个函数返回一个值,我存储在一个 numpy 数组中(因为它们的内存效率相当高)。我几乎没有足够的内存来存储所有这些浮点数。

然后我遍历这些浮点数,如果它是感兴趣的索引,我再次使用计数器变量运行 itertools.combinations 以访问产生该结果的组合(只需几秒钟)。

我已经用我有足够内存的各种较小的数据集对此进行了测试,并且在这些情况下所有条目都是相同的,但我担心这不是一种“安全”的方法来做我想做的事。

标签: pythonfunctional-programmingcombinatorics

解决方案


文档

组合按字典排序顺序发出。因此,如果输入的可迭代对象已排序,则组合元组将按排序顺序生成。

元素根据它们的位置而不是它们的值被视为唯一的。因此,如果输入元素是唯一的,则每个组合中都不会出现重复值。


推荐阅读