2016.07.17-18 集合方法

集合(set):
    特性1.集合的元素都是唯一的。
        2.集合是无序的(非线性序列)。
    set的定义(初始化):
        s = set()
        s = {1, 2, 3}
    
    增加元素:添加的元素必须是可hash的,list、set、bytearray、dict是不可hash的,所以不能作为set的元素,通常来说内置类型不能变的都是可hash的。
        add方法:添加一个元素到集合,如果该元素在集合已经存在,集合不会发生任何改变(集合的元素都是唯一的)。
        add(...)
            Add an element to a set.
            This has no effect if the element is already present.        
            >>> s = {1, 2, 3}
            >>> s.add(4)
            >>> s
            {1, 2, 3, 4}
            >>> s.add(2)
            >>> s
            {1, 2, 3, 4}

        update方法:将一个可迭代对象更新到集合。
        update(...)
            Update a set with the union of itself and others.    
            >>> s
            {1, 2, 3, 4}
            >>> s.update({4, 5, 6})
            >>> s
            {1, 2, 3, 4, 5, 6}
            >>> s.update([1, 22 ,11])
            >>> s
            {1, 2, 3, 4, 5, 6, 22, 11}
            >>> s.update('python')
            >>> s
            {1, 2, 3, 4, 5, 6, 11, 22, 'h', 'n', 'y', 'p', 'o', 't'}
            >>> s.update({'a':1, 'b':2}) 
            >>> s
            {1, 2, 3, 4, 5, 6, 'b', 11, 22, 'a', 'h', 'n', 'y', 'p', 'o', 't'} #update字典时只会添加字典的key到集合。
            >>> 
    删除元素:
        remove方法:删除集合的一个元素,如果该元素不存在,则抛出一个KeyError异常。
        remove(...)
            Remove an element from a set; it must be a member.
            If the element is not a member, raise a KeyError.
            >>> s
            {1, 2, 3, 4, 5, 6, 'b', 11, 22, 'a', 'h', 'n', 'y', 'p', 'o', 't'}
            >>> s.remove(1)
            >>> s
            {2, 3, 4, 5, 6, 'b', 11, 22, 'a', 'h', 'n', 'y', 'p', 'o', 't'}
            >>> s.remove(100)
            Traceback (most recent call last):
              File "<stdin>", line 1, in <module>
            KeyError: 100
            >>> 
        discard方法:删除集合的一个元素,如果该元素不存在,则什么都不做。
        discard(...)
            Remove an element from a set if it is a member.
            If the element is not a member, do nothing.
            >>> s
            {2, 3, 4, 5, 6, 'b', 11, 22, 'a', 'h', 'n', 'y', 'p', 'o', 't'}
            >>> s.discard(2)
            >>> s
            {3, 4, 5, 6, 'b', 11, 22, 'a', 'h', 'n', 'y', 'p', 'o', 't'}
            >>> s.discard(200)
            >>> 
        pop方法:随机删除集合的一个元素,并返回该元素,如果集合为空则抛出一个KeyError异常。
        pop(...)
            Remove and return an arbitrary set element.
            Raises KeyError if the set is empty.
            >>> s
            {1, 2, 3}
            >>> s.pop()
            1
            >>> s.pop()
            2
            >>> s.pop()
            3
            >>> s.pop()
            Traceback (most recent call last):
              File "<stdin>", line 1, in <module>
            KeyError: 'pop from an empty set'
            >>> 
        clear方法:删除集合的所有元素。
        clear(...)
            Remove all elements from this set.
            >>> s
            {1, 2, 3}
            >>> s.clear()
            >>> s
            set()
            >>> 
    修改元素和查找元素:
        没有任何方法可以直接修改和查找集合中的某个具体元素,因为集合是无序的,所以没有任何方法能够定位到集合某个元素的位置访问方法:
        集合是可迭代对象,可以使用成员运算符(innot in)
        可以使用for in的方式访问集合
        线性结构的成员运算,时间复杂度是O(n),集合的成员运算,时间复杂度是O(1)


    额外拓展:时间复杂度
        效率排列:
        O(1)        常数复杂度
        O(logn)        对数复杂度
        O(n)        线性复杂度
        O(n^2)        平方复杂度
        O(n^3)
        O(2^n)        指数复杂度
        O(n!)        阶乘复杂度
原文地址:https://www.cnblogs.com/LouisZJ/p/5685799.html