首页 > 编程语言 > 详细

Python中的Sets数据结构

时间:2014-01-24 05:08:41      阅读:463      评论:0      收藏:0      [点我收藏+]

Python的set和其他语言类似,是一个无序不重复元素集,基本功能包括关系测试和消除重复元素
集合对象支持union(联合),intersection(交),difference(差)和sysmmetric difference(对称差集)等集合运算。

 

要创建集合,可使用set()函数并像下面这样提供一系列的项:

s = set([3,5,9,10])      #创建一个数值集合
t = set("Hello")         #创建一个唯一字符的集合

 

基本操作

sets 支持 x in set, len(set),和 for x in set。作为一个无序的集合,sets不记录元素位置或者插入点。因此,sets不支持 indexing, slicing, 或其它类序列(sequence-like)的操作。

bubuko.com,布布扣
t.add(x)            # 添加一项
s.update([10,37,42])  # 在s中添加多项
t.remove(H)         # 使用remove()可以删除一项
len(s)                # set 的长度
x in s                # 测试 x 是否是 s 的成员
s.issubset(t)         # 测试是否 s 中的每一个元素都在 t 中,返回True / False
s.issuperset(t)       # 测试是否 t 中的每一个元素都在 s 中
bubuko.com,布布扣

 

集合运算

bubuko.com,布布扣
a = t | s          # t 和 s的并集
b = t & s          # t 和 s的交集
c = t – s          # 求差集(项在t中,但不在s中)
d = t ^ s          # 对称差集(项在t或s中,但不会同时出现在二者中)

>>> 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]) 
bubuko.com,布布扣

 

小应用: 去除大量列表里重复元素
这个问题可以用hash来解决,这里可以用set解决如下:

bubuko.com,布布扣
>>> 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]
bubuko.com,布布扣

Python中的Sets数据结构

原文:http://www.cnblogs.com/xiaoxuch-zhl/p/3531562.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!