• 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!)        阶乘复杂度
  • 相关阅读:
    Simple DirectMedia Layer常用API总结
    [游戏复刻] Super Mario Brothers(1985. Famicom)
    [游戏复刻] 2048(2014. Android)
    图的结构以及寻路算法的c实现
    散列查找的C实现
    【游戏编程从0开始】一、基本结构
    C++中const关键字用法总结
    C标准库常用函数概要
    字符串表达式计算器的设计
    初探数据结构
  • 原文地址:https://www.cnblogs.com/LouisZJ/p/5685799.html
Copyright © 2020-2023  润新知