set也是python里一个重要类型,有时候还是蛮好用的。详细文档和说明可以用help(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]
很酷把,几行就可以搞定。
下面是set在python3.0中的一些变化:
在Python 3.x中,这个改变是非常明显的,sets模块消失,set()内建函数消失。
而正确的创建一个集合的语法变成了:
s={1,2,3},用花括弧的方法。
s={(1,2,3)},只会构造包含一个元素(该元素为元组)的集合。
现在看起来集合在Python中,更像是跟list/turple/dict一致的内建数据类型,而这个语法,也是PEP 218最初的建议。
list用方括号
turple用小括号
dict用花括号。
现在set用的也是花括号了。
这个变化,应该算是Python 3.0比较大的语法变化之一。
阅读(1505) | 评论(0) | 转发(0) |