如何在循环中创建新列表并命名它们,以便使用Python将另一个列表中的项目填充到它们中?

2024-05-16 12:53:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我做了一个双for循环,首先从部首列表中提取一个单词,然后在同一个列表中迭代寻找相似的单词(比率为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']

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


Tags: in列表forlenrangeresult单词words
1条回答
网友
1楼 · 发布于 2024-05-16 12:53:11

我想你需要这样的东西

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)

相关问题 更多 >