python set和list
来源:互联网 发布:最后的舞者 知乎 编辑:程序博客网 时间:2024/06/05 22:35
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,数据只出现一次,只关心数据是否出现, 不关心其位置;
下面来点简单的小例子说明把。
>>> 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没有排序)。此种方法不仅方便且效率较高。
0 0
- python set和list
- Python list,Dict和Set
- python-list、tuple、dict和set
- python数据类型list、tuple、dict和set
- python中set和list的操作
- python之list,tuble,dict和set
- python diff set list
- Python list vs set
- python list ,set
- python中 list和tuple 、dict和set区别
- 6.python的set、list和dict的解析
- 【Python系列5】set和list的妙用
- python的list,tuple,dist,set和不可变对象
- python中list、tuple和set的基础知识(一)
- python里面的set、list、tuple区别和使用方法
- Python中list,tuple,dict,set的区别和用法
- Python中list,tuple,dict,set的区别和用法
- Python中list,tuple,dict,set的区别和用法
- CSS3-1
- poj 1020 Anniversary Cake (搜索)
- 轻量级的服务器http-server
- python运维服务器
- Java集合框架(三)day_17
- python set和list
- 仿乐透购彩app(2)
- 侧滑菜单的一点小小的总结
- 编程是可以从事一生的职业吗
- C# 枚举尚未开始,或者已经结束
- 学习笔记:进步一认识mesos(部分翻译)
- Python--列表解析
- 2016.07.24简要记录----maven
- 各个浏览器的内核