python内置数据结构之set
2017-10-08 12:37
344 查看
内置数据结构set
定义: 可变的、无序的、不重复的元素的集合. 常用于: 去重 set是可迭代对象 set中的元素必须是可hash的 set中的值不能通过索引访问set定义,初始化
set() -> new empty set object set(iterable) -> new set object 注意: 定义set时,可用{}来表示,但不能为空 如下: >>> type({}) # '{}'表示定义的是dict <class 'dict'> >>> type({1}) <class 'set'>
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'
相关文章推荐
- python 内置数据结构的基本操作 —— Set(1)
- Python内置数据结构——集合set ,集合运算
- python 内置数据结构的基本操作 —— Set(2)
- week03_python内置数据结构_set及操作
- python学习3-内置数据结构3-bytes和bytearray
- python set集合(数据结构)
- Python基础数据结构之数据转换(Dict,Set,Tuple,List)
- python基础知识——内置数据结构(元组)
- week02_python内置数据结构__列表
- week02_python内置数据结构__字符串
- Python内置数据结构——bytes,bytearray
- python学习二----内置数据结构
- 004-Python内置数据结构-七种数据结构一览
- Python的内置数据结构
- 【Python】11、python内置数据结构之字典
- python基础知识——内置数据结构(字典)
- python 下的数据结构与算法---8:哈希一下【dict与set的实现】
- Python 利用内置set函数对字符串和列表进行去重的方法
- Python标准库:内置函数set([iterable])
- Python中内置数据类型list,tuple,dict,set的区别和用法