海量数据如何使用itertools产品

How to use itertools product with a huge data

我想用python中的1,2,3三个元素做一个81元组的列表。

我试图找到解决方案,然后我找到了这些有用的链接:

How to use itertools to compute all combinations with repeating elements?

Which itertools generator doesn't skip any combinations?

根据以上链接,我应该做以下事情

import itertools

list = []
for p in itertools.product(range(1, 3 + 1), repeat=81):
    list.append(p)

print(list)

但是,我的电脑挂了。我认为列表中的数据太多了。

我想知道是否有命令只打印列表中的前 100 个元素或列表中的第 101 到第 200 个元素。

您可以使用 itertools.islice:

p = itertools.product(range(1, 3 + 1), repeat=81)
s = itertools.islice(p, 101, 200)
print(list(s))

但是,这将遍历所有元素,直到到达切片的起始索引。因此,对于具有大量元素的迭代器末尾的范围(您的元素有 3**81 = 443426488243037769948249630619149892803 或者换句话说:处理太多,更不用说存储了),这将 运行 陷入类似的问题。

对于后面的范围,您必须手动计算第 n 个元素并从那里生成后继...请参阅 How to select specific item from cartesian product without calculating every other item 以获取一些灵感。