集合set

set集合是一个无序不重复元素的集,基本功能包括关系测试和消除重复元素。集合使用大括号({})框定元素,并以逗号进行分隔。但是注意:如果要创建一个空集合,必须用 set() 而不是 {} ,因为后者创建的是一个空字典。

集合数据类型的核心在于自动去重。

s = set([1,1,2,3,3,4])
s
{1, 2, 3, 4} # 自动去重
-------------------------------------
>>> set("this is test") # 对于字符串,集合会把它一个一个拆开,然后去重,空格是空格去重
{'t', ' ', 's', 'h', 'e', 'i'}

通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果:

s = {1,2,3,4}
s.add(5)
s
{1,2,3,4,5}
s.add(5)
{1,2,3,4,5}

可以通过update()方法,将另一个对象更新到已有的集合中,这一过程同样会进行去重。

>>> s
{1, 2, 3, 4, 5}
>>> s.update("json")
>>> s
{1, 2, 3, 4, 5, 'j', 's', 'n', 'o'}

通过remove(key)方法删除指定元素,或者使用pop()方法。注意,集合的pop方法无法设置参数,删除指定的元素:

s
{1, 2, 3, 4, 5, 'j', 's', 'n', 'o'}
s.remove("n")
{1, 2, 3, 4, 5, 'j', 's', 'o'}
s.pop() # 弹出第一个元素
1
s.pop(3)
Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
s.pop(3)
TypeError: pop() takes no arguments (1 given)

需要注意的是,集合不能取出某个元素,因为集合既不支持下标索引也不支持字典那样的通过键值对获取。

除了add、clear、copy、pop、remove、update等集合常规操作,剩下的全是数学意义上的集合操作,交并差等等

对集合进行交并差等,既可以使用union一类的英文方法名,也可以更方便的使用减号表示差集,“&”表示交集,“|”表示并集 。

x = set('runoob')
y = set('google')
x, y
(set(['b', 'r', 'u', 'o', 'n']), set(['e', 'o', 'g', 'l'])) # 重复的被删除
x & y # 交集
set(['o'])
x | y # 并集
set(['b', 'e', 'g', 'l', 'o', 'n', 'r', 'u'])
x - y # 差集
set(['r', 'b', 'u', 'n'])

集合数据类型属于Python内置的数据类型,但不被重视,在很多书籍中甚至都看不到一点介绍。其实,集合是一种非常有用的数据结构,它的去重和集合运算是其它内置类型都不具备的功能,在很多场合有着非常重要的作用,比如网络爬虫。

最新文章

  1. web移动端fixed布局和input等表单的爱恨情仇 - 终极BUG,完美解决
  2. js-设置焦点
  3. asp.net MVC动态路由
  4. 【html】:禁止鼠标事件
  5. Oracle Data Integrator与OWB的集成及迁移
  6. PLS-00103: 出现符号 ...
  7. 判断浏览器类型-----------navigator.userAgent.indexOf()
  8. linux设置环境变量
  9. 通过纯Java代码从excle中读取数据(为.xlsx文件)
  10. 【mac版】前端开发工具整理
  11. css进行中打点效果
  12. 取消layUI中日期选择控件默认填充日期
  13. unit3d 初次接触
  14. MFC为多个控件绑定同一个函数
  15. http协议-https协议-相对协议
  16. 基于tkinter的九型人格测试系统介绍
  17. elasticsearch安装kibana插件
  18. 『cs231n』神经网络组件
  19. Need You Now --Lady Antebellum
  20. 【Win10】一些零碎不好归档的小总结(原谅我这个该死的标题吧)

热门文章

  1. web应用程序上传文件 超过了最大请求长度
  2. Python整合pdf【新手必学】
  3. 01-Spring的概述
  4. IDEA类和方法注释自动生成
  5. 攻防世界 xff_referer
  6. vue 中监听页面滚动
  7. Python实现重命名一个文件夹下的图片
  8. lucky 的 时光助理(3)
  9. 【MySQL】数据类型之数字相关
  10. JS中的Boolean对象