包含所有组合memoryerror的Python列表

时间:2017-10-25 05:30:31

标签: python itertools

我想列出包含其他三个列表的所有组合的列表。 xlijst2有355件商品,ylijst2有35件商品en zlijst2有420件商品。这是我的代码:

alles = [xlijst2, ylijst2, zlijst2]
lijstje = list(itertools.product(*alles))

当我运行它时,我得到一个MemoryError。有某种解决方法吗?

2 个答案:

答案 0 :(得分:3)

是的,解决方法是使用generator返回itertools,而不将其转换为明确的列表:

lijstje = itertools.product(*alles)

从那里,您可以逐个迭代这些组合。

for elt in lijstje:
    ...do something()

答案 1 :(得分:1)

方式有太多结果可以适应ram。您必须将其写入文件。我应该警告你 - 这不会是少数项目。

with open("values.txt", "w") as f:
    for value in itertools.product(*alles):
        f.write(", ".join(value) + "\n")