假设我们使用迭代组合在Python中生成大量列表,并且您想要检索具有某些属性的列表。
如果列表列表足够大,仅生成列表将占用大部分计算时间。
有没有办法生成迭代的前x个成员以减少整体计算时间?让我们说:
y=50
z=[list(combo) for combo in combinations(range(y + 1), 11)]
假设我们有一个函数A,这样当我们将A应用于z时,我们可以快速获得所需的列表。是否有计算z的每个成员后应用函数A的方法?因此,不是先计算整个列表列表,而是创建单个项目的瞬间,函数会对其进行评估吗?
更一般地说,是否有任何方法可以检索z的前x个成员,而不是整个列表列表?
答案 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