如何将可迭代的内容添加到集合中?
添加所有的“一个[...]明显的方法”是什么现有集合
的可迭代项?
What is the "one [...] obvious way" to add all items of an iterable to an existing set
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您可以将
list
的元素添加到set
中,如下所示:You can add elements of a
list
to aset
like this:为了让那些可能相信在循环中执行
aset.add()
的性能与执行aset.update()
具有竞争力的人受益,下面是一个示例您可以在公开之前快速测试您的信念:看起来循环方法的每项成本是
update
方法的三倍以上。使用
|= set()
的成本大约是update
的 1.5 倍,但只是在循环中添加每个单独项目的成本的一半。For the benefit of anyone who might believe e.g. that doing
aset.add()
in a loop would have performance competitive with doingaset.update()
, here's an example of how you can test your beliefs quickly before going public:Looks like the cost per item of the loop approach is over THREE times that of the
update
approach.Using
|= set()
costs about 1.5x whatupdate
does but half of what adding each individual item in a loop does.您可以使用 set() 函数将可迭代转换为集合,然后使用标准集合更新运算符 (|=) 将新集合中的唯一值添加到现有集合中。
You can use the set() function to convert an iterable into a set, and then use standard set update operator (|=) to add the unique values from your new set into the existing one.
只是快速更新,使用 python 3 的计时:
结果是:
Just a quick update, timings using python 3:
results are:
使用列表理解。
例如使用列表来短路创建可迭代对象:)
[编辑:错过了问题的设置部分]
Use list comprehension.
Short circuiting the creation of iterable using a list for example :)
[Edit: missed the set part of question]