gpt4 book ai didi

python - 具有大数据集的嵌套 for 循环

转载 作者:行者123 更新时间:2023-12-01 04:43:56 25 4
gpt4 key购买 nike

我有一个子列表列表,每个子列表都包含一个或多个字符串。我将一个子列表中的每个字符串与其他子列表中的每个其他字符串进行比较。这包括编写两个 for 循环。但是,我的数据集大约有 5000 个子列表,这意味着我的程序将永远运行,除非我以 500 个子列表的增量运行代码。如何更改该程序的流程,以便我仍然可以查看与每个 i 相对应的所有 j 值,并且能够运行该程序约 5000 个子列表。 (wn 是 Wordnet 库)这是我的代码的一部分:

for i in range(len(somelist)):
if i == len(somelist)-1: #if the last sublist, do not compare
break
title_former = somelist[i]

for word in title_former:
singular = wn.morphy(word) #convert to singular
if singular == None:
pass
elif singular != None:
newWordSyn = getNewWordSyn(word,singular)
if not newWordSyn:
uncounted_words.append(word)
else:
for j in range(i+1,len(somelist)):
title_latter = somelist[j]
for word1 in title_latter:
singular1 = wn.morphy(word1)
if singular1 == None:
uncounted_words.append(word1)
elif singular1 != None:
newWordSyn1 = getNewWordSyn(word1,singular1)
tempSimilarity = newWordSyn.wup_similarity(newWordSyn1)

示例:

Input = [['space', 'invaders'], ['draw']]
Output= {('space','draw'):0.5,('invaders','draw'):0.2}

输出是一个字典,其中包含相应的字符串对元组及其相似度值。上面的代码片段并不完整。

最佳答案

做一些预处理而不是一遍又一遍地执行一堆操作怎么样?我没有测试这个,但你明白了;你需要把一切能从循环中取出来的东西都拿出来。

# Preprocessing:
unencountered_words = []
preprocessed_somelist = []
for sublist in somelist:
new_sublist = []
preprocessed_somelist.append(new_sublist)
for word in sublist:
temp = wn.morphy(word)
if temp:
new_sublist.append(temp)
else:
unencountered_words.append(word)

# Nested loops:
for i in range(len(preprocessed_somelist) - 1): #equivalent to your logic
for word in preprocessed_somelist[i]:
for j in range(i+1, len(preprocessed_somelist)):
for word1 in preprocessed_somelist[j]:
tempSimilarity = newWordSyn.wup_similarity(newWordSyn1)

关于python - 具有大数据集的嵌套 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29907443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com