【发布时间】:2018-05-02 07:53:19
【问题描述】:
我有如下功能:
def fun(content):
for i in content:
id = i.split('\"')[0]
yield id
return id
问题是内容中有一些重复的值。 有没有办法知道值“id”是否已经在生成器“id”中?而不是得到最终的生成器然后使用 set()?
【问题讨论】:
我有如下功能:
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,因此您不需要在最后返回。
【讨论】:
fun 作为生成器,则返回一个集合会更简单且基本相同。