cam*_*mil 1 python generator python-2.7
目前我正在这样做:
# duplicates is a list
uniques = list(set(duplicates))
Run Code Online (Sandbox Code Playgroud)
然而,独特性往往是短暂的。构建一个唯一的生成器会更好吗?如果是这样,我该怎么做?
如果您不需要列表,只需使用set(duplicates)即可。这大约使您的内存使用量减少一半。集合是可迭代的。
或者,您可以定义一个生成器:
def uniques(it):
seen = set()
for x in it:
if x not in seen:
yield x
seen.add(x)
Run Code Online (Sandbox Code Playgroud)
但我的预感是,这比一次性构建一套要慢得多。无论如何,内存消耗大致相同。