如何不从生成器返回重复值?

时间:2018-05-02 07:53:19

标签: python generator yield

我有如下功能:

def fun(content):
    for i in content:
        id = i.split('\"')[0]
        yield id    
    return id

问题是内容中存在一些重复的值。 有没有办法知道值'id'是否已经在生成器'id'中?而不是获得最终的生成器,然后使用set()?

1 个答案:

答案 0 :(得分:1)

您可以使用set内的fun来跟踪已经看到的ID:

def fun(content):
    observed = set()
    for i in content:
        id = i.split('\"')[0]
        if id not in observed:
            observed.add(id)
            yield id

此外,由于您不会产生ID,因此您不需要在最后返回。