16-set集合

作者: ju7ran | 来源:发表于2019-04-05 13:41 被阅读0次

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

    相关文章

      网友评论

        本文标题:16-set集合

        本文链接:https://www.haomeiwen.com/subject/jeghiqtx.html