zoukankan      html  css  js  c++  java
  • Python数据类型-8 集合set

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

  • 相关阅读:
    Owin
    C#不区分大小写的字符串替换(Replace)函数
    如何创建测试程序调试nginx数据结构
    一张脑图说清 Nginx 的主流程
    gdb常用命令记录
    nginx的configure流程
    c 编译器大全
    PHP 的 uniqid 函数产生的 id 真的是唯一的么?
    UUID那些事
    PHP 编码规范
  • 原文地址:https://www.cnblogs.com/sakura579/p/12243978.html
Copyright © 2011-2022 走看看