python set和list
2016-07-24 09:51
316 查看
python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算.
sets 支持 x in set, len(set),和 for x in set。作为一个无序的集合,sets不记录元素位置或者插入点。因此,sets不支持 indexing, slicing, 或其它类序列(sequence-like)的操作。
应用场景:
list, 简单的数据集合,可以使用索引;
set,数据只出现一次,只关心数据是否出现, 不关心其位置;
下面来点简单的小例子说明把。
再来些小应用。
去除海量列表里重复元素,用hash来解决也行,只不过感觉在性能上不是很高,用set解决还是很不错的,示例如下:
很酷把,几行就可以搞定。
考虑到range(500, 1500) 调用了1000次(会比较耗时),改成只调用一次的话,时间从28.2msec降到了18.2msec。仍然要(比Set)慢大概150倍。
set转成list方法如下:
list转成set方法如下:
可见set和lsit可以自由转换,在删除list中多个/海量重复元素时,可以先转换成set,然后再转回list并排序(set没有排序)。此种方法不仅方便且效率较高。
sets 支持 x in set, len(set),和 for x in set。作为一个无序的集合,sets不记录元素位置或者插入点。因此,sets不支持 indexing, slicing, 或其它类序列(sequence-like)的操作。
应用场景:
list, 简单的数据集合,可以使用索引;
set,数据只出现一次,只关心数据是否出现, 不关心其位置;
下面来点简单的小例子说明把。
>>> x = set('spam') >>> y = set(['h','a','m']) >>> x, y (set(['a', 'p', 's', 'm']), set(['a', 'h', 'm']))
再来些小应用。
>>> x & y # 交集 set(['a', 'm']) >>> x | y # 并集 set(['a', 'p', 's', 'h', 'm']) >>> x - y # 差集 set(['p', 's'])
去除海量列表里重复元素,用hash来解决也行,只不过感觉在性能上不是很高,用set解决还是很不错的,示例如下:
>>> a = [11,22,33,44,11,22] >>> b = set(a) >>> b set([33, 11, 44, 22]) >>> c = [i for i in b] >>> c [33, 11, 44, 22]
很酷把,几行就可以搞定。
考虑到range(500, 1500) 调用了1000次(会比较耗时),改成只调用一次的话,时间从28.2msec降到了18.2msec。仍然要(比Set)慢大概150倍。
~$ python -m timeit -n 1000 "range1500=range(500, 1500);[x for x in range(1000) if x in range1500]"
set转成list方法如下:
s = set('12342212') print s # set(['1', '3', '2', '4']) l = list(s) l.sort() # 排序 print l # ['1', '2', '3', '4']
list转成set方法如下:
l = ['12342212'] s = set(l[0]) print s # set(['1', '3', '2', '4']) m = ['11','22','33','44','11','22'] print set(m) # set(['11', '33', '44', '22'])
可见set和lsit可以自由转换,在删除list中多个/海量重复元素时,可以先转换成set,然后再转回list并排序(set没有排序)。此种方法不仅方便且效率较高。
相关文章推荐
- virtualenv 指定 python 解释器的版本
- python3.5类型示意
- 杀毒软件影响python运行速度
- Python opencv(10)图像的加噪
- IronPython死而复生
- Python 3.4 链接mysql5.7 数据库使用方法
- python opencv(9)图像的复制与灰度化
- Python 小甲鱼教程 课后练习42
- 第五章:pandas入门Day8-11
- 配置vim for python
- Python语法
- 24点计算器Python脚本
- python-递归
- Python 经典类和新式类
- Python 绑定方法和未绑定方法
- Python中__new__与__init__方法的区别详解
- python字符串输出引号,用转义字符\"
- python核心编程第六章练习
- python中整形对象存储位置
- python核心编程第五章练习