博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python内置数据结构之set
阅读量:7239 次
发布时间:2019-06-29

本文共 1370 字,大约阅读时间需要 4 分钟。

内置数据结构set

    定义:        可变的、无序的、不重复的元素的集合.        常用于: 去重    set是可迭代对象    set中的元素必须是可hash的    set中的值不能通过索引访问
  • set定义,初始化

        set() -> new empty set object    set(iterable) -> new set object    注意:        定义set时,可用{}来表示,但不能为空    如下:        >>> type({})      # '{}'表示定义的是dict        
            >>> type({1})             

  • set方法

    • 增 

          add(elem)    添加一个元素至set    update(*others)    将可迭代对象添加至set

    •     remove(elem)    删除set中指定的元素,如果找不到抛出KeyError    discard(elem)     删除set中指定的元素,如果找不到,就什么都不做    pop() --> elem    随机弹出set中某元素,并输出至标准输出    如果找不到抛出KeyError    clear()    清空set内所有元素    问: 为什么抛出的异常是KeyError,而不是ValueError?    说明set是通过Key来查询值是否存在,而不是通过value的对比.

    •     非线性结构,无法索引

    •     修改,还不如直接删除,再增一个新元素

  • set成员运算符比较

        比较set和list查询效率:    lst1 = list(range(100))    lst2 = list(range(1000000))    -1 in lst1、-1 in lst2     # 使用此语句测试效率    s1 = set(range(100))    s2 = set(range(1000000))    -1 in s1、-1 in s2         # 使用此语句测试效率    测试结果:        list相差数量级的倍数        set相差无几

  • set和线性结构

        线性结构在查询效率方面,查询的数据的量级越大,所消耗的时间则会越多.    set、dict等,内部使用hash作为key,在查询上时间复杂度为O(1).即查询时间,跟数据量级无关.

  • 可hash对象

        整型
        字符型
        tuple
        None
        bytes(保存的是对应的字符编码)   

        使用内置的hash()函数来判断此对象是否是可hash的.

        例:
            >>> hash([1])          # 列表不可hash
            Traceback (most recent call last):
              File "<stdin>", line 1, in <module>
            TypeError: unhashable type: 'list'                                                                                                                                                                                                                                                          本文转自 撒旦搞时间 51CTO博客,原文链接:http://blog.51cto.com/12074120/1970702,如需转载请自行联系原作者

你可能感兴趣的文章
linux进程状态浅析
查看>>
【JavaScript】DOM节点常用方法介绍02
查看>>
非官方统计2018微信年度账单实现
查看>>
微信小程序练手 demo 之天气小程序总结(流水账)
查看>>
异步操作系列之Generator函数与Async函数
查看>>
水平无限循环弹幕的实现
查看>>
老前端出坑小程序(一)
查看>>
别躲了,机器知道你们的关系
查看>>
mac配置完ssh依然提示"Enter passphrase for key"解决方法
查看>>
java面试
查看>>
前端日刊君来也
查看>>
20190119杂七杂八
查看>>
Here are some practical JavaScript objects that have encapsulation (翻译)
查看>>
C# 通过反射创建实例
查看>>
Android Lifecycle结合RxJava&Retrofit实现安全的网络回调
查看>>
UML 类图
查看>>
人工智能即将取代人类?
查看>>
关于常用的http请求头以及响应头详解
查看>>
HTML解析过程会触发哪些事件?
查看>>
技术变现,到底怎么变?这里有几个小众的“金点子”
查看>>