Python 为什么这段代码要尝试列表元素与所有其他成员的所有排列,并以退出状态退出?
我有一个很大的文本库(~170kB),我想为NLP应用程序进行训练 然而,试图使一个列表的所有元素的列表与同一列表的所有其他元素一次配对一个,导致程序以退出代码137退出Python 为什么这段代码要尝试列表元素与所有其他成员的所有排列,并以退出状态退出?,python,list,list-comprehension,corpus,Python,List,List Comprehension,Corpus,我有一个很大的文本库(~170kB),我想为NLP应用程序进行训练 然而,试图使一个列表的所有元素的列表与同一列表的所有其他元素一次配对一个,导致程序以退出代码137退出 def wordsToBigrams(words): totalSentenceBigrams = [(a,b) for b in words for a in words] 在构建该列表时,很可能内存不足。为了避免这种情况,请在生成每一对时使用并处理它。或者将生成的对保存到文件以备以后使用 具体而言,请使用产品功能
def wordsToBigrams(words):
totalSentenceBigrams = [(a,b) for b in words for a in words]
在构建该列表时,很可能内存不足。为了避免这种情况,请在生成每一对时使用并处理它。或者将生成的对保存到文件以备以后使用 具体而言,请使用
产品
功能:
等效于生成器表达式中的嵌套for循环。例如,产品(A,B)
返回的值与相同(A中x的(x,y)表示B中y的值)
编辑:是的,您的脚本需要大量内存-这是我的计算机上的内存消耗:
有多少单词?有趣的是,我还没有任何输出,但程序还没有退出。为什么使用itertools会产生影响并让程序运行?Ketcomp itertools使用了一种称为生成器的东西。我将引导您了解它们是如何工作的,以及如何使用它们。基本上,生成器一部分一部分地生成结果,因此整个结果不必一次存储在内存中。@Ketcomp err,我不确定,我认为我错了,itertools使用了一种称为迭代器的东西,我不太确定:/谢谢!使用产品(a、b)是否有更好的替代方案?这是语言特定的延迟吗?可比较的Java代码在大约30秒内完成执行。@Ketcomp的“可比较”是指Java代码将生成的每一对存储在一个巨大的数组中?