如何不 return 生成器中的重复值?

How to not return duplicate values from a generator?

我有如下功能:

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

问题是内容中有一些重复值。 有什么方法可以知道值 'id' 是否已经在生成器 'id' 中?而不是获得最终生成器然后使用 set()?

您可以在 fun 中使用 set 来跟踪已经看到的 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,所以最后不需要 return。