从这个链接它说生成器没有像迭代一样初始化。
如何将 generator 的元素添加到集合中?有没有比仅仅使用
for item in generator
之类的东西和使用 setname.add(item)
更好的方法?
生成器是通过
cursor.execute("SELECT ...")
命令从 SQLite3 数据库连接返回到游标的生成器。
您可以使用
update
方法:
In [3]: x = set()
In [4]: g = (i**2 for i in range(5))
In [6]: x.update(g)
In [7]: x
Out[7]: {0, 1, 4, 9, 16}
update
修改x
。如果您只想返回一组新的,您可以使用 union
:
In [8]: x = set()
In [9]: g = (i**2 for i in range(5))
In [10]: x.union(g)
Out[10]: {0, 1, 4, 9, 16}
你也可以这样做
set(gen)
:
>>> set(x**2 for x in range(5))
set([0, 1, 4, 9, 16])
(请注意,这会创建一个仅包含生成器中的元素的新集合。如果要将元素添加到预先存在的集合中,则需要按照 unutbu 的答案进行一些操作。)
poss = set((i) for i in range(5) )
print(poss)
poss = set()
for i in range(5):
poss.add(i)
print(poss)
>>> {0, 1, 2, 3, 4}
>>> {0, 1, 2, 3, 4}