保存迭代';马尔可夫链Python的结果

保存迭代';马尔可夫链Python的结果,python,for-loop,iteration,markov-chains,Python,For Loop,Iteration,Markov Chains,在自然语言生成(NLG)的上下文中,我想基于Makov链的原理,使用Python的库“Markovify”生成300个句子。 我的输入文件包含的文本是“SD” 首先,我能够用以下代码打印所有迭代的(=300)结果(文本): import markovify text_model = markovify.NewlineText(SG.Text, state_size = 1) for i in range(300): # Generate 300 sentences

在自然语言生成(NLG)的上下文中,我想基于Makov链的原理,使用Python的库“Markovify”生成300个句子。 我的输入文件包含的文本是“SD”

首先,我能够用以下代码打印所有迭代的(=300)结果(文本):

import markovify
text_model = markovify.NewlineText(SG.Text, state_size = 1)

  for i in range(300): # Generate 300 sentences 
            result = [] 
            result.append(text_model.make_sentence())
            print(result)
然后,我想在一个列表中获得所有这些迭代结果的列表,因此我尝试:

def f(i,result):
    for i in range(300): # Generate 300 sentences 
        result = [] 
        result.append(text_model.make_sentence())
    return result
但我只得到一个列表,其中包含上一次迭代的结果。
我可以在代码中修改哪些内容以获得包含所有迭代结果的列表?

必须在for循环之前执行
结果=[]
,或者每次迭代都对其进行初始化:

def f():
    result = [] 
    for i in range(300): # Generate 300 sentences 
        result.append(text_model.make_sentence())
    return result

sentences = f()
print(sentences)
编辑:实际上不需要将
result
i
作为参数

更好的是理解:

def f():
    return [text_model.make_sentence() for _ in range(300)]

result=[]
必须在for循环之前,或者每次迭代都要初始化它:

def f():
    result = [] 
    for i in range(300): # Generate 300 sentences 
        result.append(text_model.make_sentence())
    return result

sentences = f()
print(sentences)
编辑:实际上不需要将
result
i
作为参数

更好的是理解:

def f():
    return [text_model.make_sentence() for _ in range(300)]

我已经尝试过了,在本例中,我刚刚获得了一个空列表作为ResultTrange。。。我更新了我的代码一点。。。现在还不是这样吗?如果我用
“kjsdksj”
替换
text\u model.make\u-statement()
(因为我没有你的函数),它对我很有用。非常感谢,我的代码正在使用你的解决方案(我使用第一个解决方案和句子列表),我已经尝试过了,在这种情况下,我刚刚获得了一个空列表作为resultStrange。。。我更新了我的代码一点。。。现在还不是这样吗?如果我用
“kjsdksj”
替换
text\u model.make\u sensume()
(因为我没有你的函数),它对我很有用。非常感谢,我的代码正在与你的解决方案一起工作(我使用第一个带有句子列表的解决方案)