python嵌套的生成器对象内容

我的Python有问题。我试图了解哪些信息存储在我发现是生成器的对象中。我对Python一无所知,但是我必须了解这段代码的工作原理才能将其转换为Java。代码如下:


def segment(text):

    "Return a list of words that is the best segmentation of text."

    if not text: return []

    candidates = ([first]+segment(rem) for first,rem in splits(text))

    return max(candidates, key=Pwords)


def splits(text, L=20):

    "Return a list of all possible (first, rem) pairs, len(first)<=L."

    pairs = [(text[:i+1], text[i+1:]) for i in range(min(len(text), L))]

    return pairs


def Pwords(words): 

    "The Naive Bayes probability of a sequence of words."

    productw = 1

    for w in words:

      productw = productw * Pw(w)

    return productw

虽然我了解了Pwords和split方法的工作原理(函数Pw(w)只是从矩阵中获取一个值),但我仍在尝试了解“ segment”方法中“ candidates”对象的构建方式,以及它包含。以及“ max()”函数如何分析此对象。

我希望有人能帮助我,因为我在这里找不到任何可行的解决方案来打印此对象。非常感谢大家。毛罗


Helenr
浏览 158回答 1
1回答

慕勒3428872

生成器是相当简单的抽象。它看起来像一次性使用的自定义迭代器。gen = (f(x) for x in data)表示gen是迭代器,每个下一个值等于f(x),其中x是数据的对应值嵌套生成器类似于列表推导,但有很小的区别:它是一次性的它不会创建整个序列代码仅在迭代期间运行为了更容易调试,您可以尝试用列表理解替换嵌套生成器def segment(text):&nbsp; &nbsp; "Return a list of words that is the best segmentation of text."&nbsp; &nbsp; if not text: return []&nbsp; &nbsp; candidates = [[first]+segment(rem) for first,rem in splits(text)]&nbsp; &nbsp; return max(candidates, key=Pwords)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python