python 集合操作 set
来源:互联网 发布:http传输数据大小 编辑:程序博客网 时间:2024/06/16 05:57
- 发现在用python进行机器学习数据挖掘的时候经常用到set,在网上收了一些资料。
- http://blog.csdn.net/business122/article/details/7541486
- http://www.cnblogs.com/xiaoit/p/4045547.html
- set的内部结构和dict很像,主要区别是不存储value,因此,判断一个元素是否在set中速度很快。
set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的。
最后,set存储的元素也是没有顺序的。
假设我们让用户输入星期一至星期日的某天,如何判断用户的输入是否是一个有效的星期呢?
如果事先创建好一个set,包含'MON' ~ 'SUN':
123456weekdays
=
set
([
'MON'
,
'TUE'
,
'WED'
,
'THU'
,
'FRI'
,
'SAT'
,
'SUN'
])
x
=
'MON'
#用户输入的字符串
if
x
in
weekdays:
print
(
'inputok'
)
else
:
print
(
'inputerror'
)
- 下面来点简单的小例子说明把。
-
- >>>
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 inb] - >>>
c - [33,
11, 44, 22] -
-
- 集合支持一系列标准操作,包括并集、交集、差集和对称差集,例如:
-
-
-
- a
= t | s # t 和 s的并集 -
- b
= t & s # t 和 s的交集 -
- c
= t – s # 求差集(项在t中,但不在s中) -
- d
= t ^ s # 对称差集(项在t或s中,但不会同时出现在二者中) -
-
-
- 基本操作:
-
- t.add('x')
添加一项 -
- s.update([10,37,42])
在s中添加多项 -
- 使用remove()可以删除一项:
-
- t.remove('H')
-
- len(s)
- set
的长度 -
- x
in s - 测试
x 是否是 s 的成员 -
- x
not in s - 测试
x 是否不是 s 的成员
- #子集运算
- >>>
s = set([1,2,3,4,5]) - >>>
t = set([1,2,3]) - >>>
s.issubset(t) #s是否为t的子集,相当于s<=t - False
- >>>
t.issubset(s) #t是否为s的子集,相当于s>=t - True
- >>>
s<=t - False
- >>>
t<=s - True
- >>>
s - False
- >>>
s>t - True
- >>>
s==t - False
- >>>
x = set([1,2,3]) - >>>
x==t #两set是否相等 - True
对比frozenset:
frozenset:元素一经创建,不可增加、删除和修改。
不可变集合frozenset的元素可作为字典的键,但可变集合set就不行了。
还有一点需要注意,不管是set还是frozenset,Python都不支持创建一个整数的集合。
seta=set(1) #错误setb=set('1')#正确
0 0
- python 集合操作 set
- 【原创】python set处理
- python get操作
- Swift中级学习 3 集合Set
- python集合set操作
- python集合set操作
- python set集合操作
- matlab set函数 句柄操作函数
- python 操作wmi例子
- SQLPlus Set 详解
- person data set
- handwritten data set
- WDA: Set Cursor focus
- jQuery Select的操作集合
- Python中的SET集合操作
- Python中的SET集合操作
- Python中的SET集合操作
- Python中的SET集合操作
- 关于Python中的yield
- 从SQL到HiveQL
- C++创建对象的两种方法
- 第十九天:IO流
- 柔性数组
- python 集合操作 set
- CUDA 共享内存的bank co…
- 贪心算法经典例子
- Linux(ubuntu) 下安装Boost 库
- Kmeans 的MapReduce实现原理
- Pagerank 的mapreduce
- 二维数组的指针
- 手写数字识别的机器学习方法讨论
- java spring框架学习总结