如何在循环中创建新列表并为其命名,以便使用Python填充来自另一个列表的项目?

问题描述:

我做了一个循环的双重循环,首先从一个基的列表中抽出一个单词,然后遍历相同的列表寻找相似的单词(比例为70%)。 我需要的是每当第一个循环从列表中取出一个单词时,它会创建一个新的列表,其中包含由第二个循环选择的单词+相似的单词。如何在循环中创建新列表并为其命名,以便使用Python填充来自另一个列表的项目?

我尝试了很多与列表推导,但我无法弄清楚如何把第二个循环的话放入新的列表。我认为它可以工作,如果每个创建的列表都有一个索引(x)。 这里是我的代码:

x = 0 

result = [[] for x in range(len(radicals))] 
for i in range(0, len(radicals)) : 
    for j in range(1, len(radicals)) : 
     result[x].append(words[i]) 
     result[x].append(words[j])  
print(result[0]) 

我得到的结果是词的*基的数量*单的数量...

的词表:

words = ["flore", "fleur", "fleuriste", "remaniement", "remanier", "manier", "maniable", "désaimer", "aimer", "aimant", "mêler", "emmêler", "désemmêler"] 

后打印结果(部首):

['flore', 'fleur', 'fleur', 'manie', 'mani', 'mani', 'mani', 'aim', 'aim', 'aim', 'mêl', 'mêl', 'emmêl'] 

我试图在新列表中放置单词而不是单词,我只需要激进的匹配过程。

我需要这样的:

['flore', 'fleur', 'fleuriste'] 
['manier', 'remanier', 'remaniement'] 
['désaimer', 'aimer', 'aimant'] 
['mêler', 'emmêler', 'désemmêler'] 

我真的需要你的帮助。非常感谢 !

+1

?实际使用的唯一变量是'x' – Mangohero1

+0

您能否提供一个“*基”和预期结果的例子? –

+0

@KirillErmolov我刚刚编辑了我的问题:) –

我认为你需要像这样

def is_match(radical_1, radical_2): 
    # return true if two radical are the same. 

# ...  

n = len(radicals) 
result = [] 
used_js = [] 
for i in range(n): 
    if i in used_js: 
     continue 
    matches = [words[i]] 
    js = (x for x in range(n) if x != i and x not in used_js) 
    for j in js: 
     if is_match(radicals[i], radicals[j]): 
      matches.append(words[j]) 
      used_js.append(j) 
    result.append(matches) 
你意识到你正在使用相同的变量名的变量和你的`for`循环迭代都
+0

非常感谢Kirill Ermolov,它非常完美! –