如何在循环中创建新列表并命名它们以便我可以使用Python填充其他列表中的项目?

时间:2017-10-13 14:49:46

标签: python list for-loop indexing list-comprehension

我做了一个双循环,首先从一个激进列表中取一个单词,然后遍历同一个列表寻找相似的单词(比率为70%)。 我需要的是每次第一个循环从列表中取出一个单词时,它会创建一个新的列表,其中包含第二个循环选择的单词+那些相似的单词。

我尝试了很多列表推导但我无法弄清楚如何将第二个循环中的单词放入新列表中。我认为如果创建的每个列表都有索引(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 个答案:

答案 0 :(得分:0)

我认为你需要这样的东西

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)