python生成器重复

cyn*_*joy 4 python

如何避免将重复的条目添加到生成器中,或者在已经存在的情况下将其删除?

如果我应该使用别的东西,请建议.

Jas*_*rff 11

如果值是可清除的,删除重复项的最简单,最愚蠢的方法是使用set:

values = mygenerator()
unique_values = set(values)
Run Code Online (Sandbox Code Playgroud)

但请注意:集合不记得这些值最初的顺序.所以这会扰乱序列.

以下功能可能比set您的目的更好.它会过滤掉重复项,而不会使任何其他值无序:

def nub(it):
    seen = set()
    for x in it:
        if x not in seen:
            yield x
            seen.add(x)
Run Code Online (Sandbox Code Playgroud)

调用nub一个说法,可哈希值的任何迭代.它返回一个迭代器,它生成所有相同的项,但删除了重复项.