存储大型列表的前X项(Python)

时间:2013-11-19 23:14:34

标签: python list combinations combinatorics

假设我们使用迭代组合在Python中生成大量列表,并且您想要检索具有某些属性的列表。

如果列表列表足够大,仅生成列表将占用大部分计算时间。

有没有办法生成迭代的前x个成员以减少整体计算时间?让我们说:

y=50
z=[list(combo) for combo in combinations(range(y + 1), 11)]

假设我们有一个函数A,这样当我们将A应用于z时,我们可以快速获得所需的列表。是否有计算z的每个成员后应用函数A的方法?因此,不是先计算整个列表列表,而是创建单个项目的瞬间,函数会对其进行评估吗?

更一般地说,是否有任何方法可以检索z的前x个成员,而不是整个列表列表?

1 个答案:

答案 0 :(得分:3)

是的,请使用itertools.islice来限制数量。

from itertools import islice

combos = combinations(range(y + 1), 11)
data = [list(combo) for combo in islice(combos, 100)]

从组合的组合中取出前100个...然后你可以继续使用combos ......

print next(combos) # next combination
print list(islice(combos, 3, 13)) # skip 3 and take another 10