[英]How to add generator elements to a set() without a loop?
从这个链接可以看出,生成器没有像可迭代对象那样被初始化。
如何将生成器的元素添加到集合中? 有什么比for item in generator
中使用setname.add(item)
和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的回答进行操作。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.