从itertools.combinations()获得的项目顺序是否确定?
我目前正在编写一个脚本,它使用itertools.combinations产生过多的对象,足够大以至于我无法将其保留在内存中。对于每个组合,都有一个函数返回一个存储在numpy数组中的值(因为它们具有相当的内存效率)。我只有足够的内存来存储所有这些花车。
然后我迭代这些浮点数,如果它是一个感兴趣的索引,我再次使用计数器变量运行itertools.combinations来访问产生该结果的组合(只需要几秒钟)。 / p>
我用各种较小的数据集测试了这个,我有足够的内存,在这些情况下条目都是相同的,但我担心这不是一个安全的"做我想做的事。
答案 0 :(得分:5)
来自docs:
组合以字典排序顺序发出。所以,如果输入 对iterable进行排序,组合元组将按排序生成 顺序。
根据元素的位置而不是元素,将元素视为唯一元素 值。因此,如果输入元素是唯一的,则不会重复 每个组合中的值。