我只有两个句子,我想产生变量,并计算的levestein距离,但当试图用itertools生成这个列表时,甚至我的64gbram机器都超载了。在
有没有办法限制这种情况,即使我必须把它限制在一定数量的组合中。在
以下是我目前为止的代码:
from __future__ import print_function
import itertools
import sys
in_file = sys.argv[1]
X = []
with open(in_file) as f:
lis = list(f)
X.append([' '.join(x) for x in itertools.product(*map(set, zip(*map(str.split, lis))))])
for x in X:
print x
问题不在于
itertools
:itertools工作迟缓:它产生iterable。问题是首先要将所有这些元素放入一个列表中。因此,所有的组合必须同时存在。这显然需要比迭代方式更多的内存,因为在后一种情况下,前一个组合的内存可以重用。在如果要打印所有组合,而不存储它们,则可以使用:
如果要存储它们,可以使用
^{pr2}$itertools.islice
来限制数量:因此,我们将产品数量限制在1000'000。在
相关问题 更多 >
编程相关推荐