python 小知识 -set 妙用
python 中提供了好用的数据结构,比如列表,字典和集合等。列表和字典是最常用的,而今天要分享的集合 set 也有独特的妙用。
1.set 的特性
首先我们来看看集合的特性,
在集合中,所有元素都是不同
集合是无序,所以不可索引
集合和字字典一样都是都是 hash 存储,有利于查找
复制代码
集合的常用操作有:
交集: 求公共部分
并集:合并两个集合,同时去重
差集:不同的部分
复制代码
2.set 妙用场景一
如果有两个文件夹,我们想筛查出两个文件夹中共同的部分,应该怎么写这个过程?
复制代码
用列表来查找显然是效率低下的,时间复杂度 O(N*M) N 和 M 是列表的长度
另外一个用空间换时间,用字典
复制代码
用字典的 hash 值直接查找效率是 O(1), 只要扫一遍列表 1, 复杂度为 O(N)
如果用集合 set 呢?
复制代码
更加简洁,时间复杂度平均为 O(N+M)
3.set 妙用场景二
set 是 hash 结构存储的,所以只要 set 构建完成之后查找元素的效率是高于 list 的。
复制代码
上面的例子,印证了 set 的查询效率是高于 list 的;但是构建集合也是需要发时间的,所以比较适合频繁判断的情况(一次构建,多次查询)
希望 set 的妙用对你有帮助
版权声明: 本文为 InfoQ 作者【AIWeker】的原创文章。
原文链接:【http://xie.infoq.cn/article/1d82cd6a8b5d8f7dd99919bdb】。文章转载请联系作者。
评论