Python如何使其递归?

2024-09-29 01:31:29 发布

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

对Python来说是新的,对StackOverflow来说更是新的。仍在努力找出提问和获得建设性反馈的最佳方式。如果我做错了什么或需要提供更多的信息,请让我知道

my_words = []

for i in range (0, 26):
    def predict_more_words(first_word):
        bimodel = build_bigram_model()
        second_word = bimodel[first_word]
        top10words = collections.Counter(second_word).most_common(10)
        predicted_words = list(zip(*top10words))[0]
        prob_score = list(zip(*top10words))[1]
        x_pos = predicted_words
        my_words.append(x_pos[0])
        return(x_pos[0])

    predict_more_words("is")   

    print(my_words)

我有上面的代码,我试图递归调用,这样每次 predict\u如果调用了更多的单词,它将在x\u pos[0]处获取单词并将其再次输入函数,直到它到达len 26。我将这些单词/字符存储到一个列表中,我将与我已经生成的另一个列表合并。它不接受x\u pos[0]作为参数,并给我一个nameError-未定义

感谢您的帮助!提前谢谢


Tags: pos列表mymorezip单词predictlist
1条回答
网友
1楼 · 发布于 2024-09-29 01:31:29

我不认为这个函数需要递归,因为在这个问题中没有任何本质上的递归

您可以简化函数,使其只返回给定单词的最可能的预测单词。然后只需编写一个循环,根据需要多次调用该函数,在每一步将先前生成的字传递到预测函数中

例如:

def predict_next_word(word):
    bimodel = build_bigram_model()
    top10words = collections.Counter(bimodel[word]).most_common(10)
    predicted_words = list(zip(*top10words))[0]
    return predicted_words[0]


my_words = ["is"]

for i in range(26):
    previous_word = my_words[-1]
    my_words.append(predict_next_word(previous_word))

相关问题 更多 >