python 集合操作 set

原创 2016年08月29日 12:50:26
  1. 发现在用python进行机器学习数据挖掘的时候经常用到set,在网上收了一些资料。

  2. http://blog.csdn.net/business122/article/details/7541486
  3. http://www.cnblogs.com/xiaoit/p/4045547.html

  4. set的内部结构和dict很像,主要区别是不存储value,因此,判断一个元素是否在set中速度很快。
  5. set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的。

    最后,set存储的元素也是没有顺序的。

  6. 假设我们让用户输入星期一至星期日的某天,如何判断用户的输入是否是一个有效的星期呢?

  7. 如果事先创建好一个set,包含'MON' ~ 'SUN':

     

    1
    2
    3
    4
    5
    6
    weekdays = set(['MON''TUE''WED''THU''FRI''SAT''SUN'])
    = 'MON' # 用户输入的字符串
    if in weekdays:
        print ('input ok')
    else:
        print ('input error')

  8. 下面来点简单的小例子说明把。  
  9.   
  10. >>> set('spam' 
  11. >>> set(['h','a','m'])  
  12. >>> x,  
  13. (set(['a''p''s''m']), set(['a''h''m']))  
  14.   
  15. 再来些小应用。  
  16.   
  17. >>> 交集  
  18. set(['a''m'])  
  19.   
  20. >>> 并集  
  21. set(['a''p''s''h''m'])  
  22.   
  23. >>> 差集  
  24. set(['p''s'])  
  25.   
  26. 记得以前个网友提问怎么去除海量列表里重复元素,用hash来解决也行,只不过感觉在性能上不是很高,用set解决还是很不错的,示例如下:  
  27.   
  28. >>> [11,22,33,44,11,22 
  29. >>> set(a)  
  30. >>>  
  31. set([33114422])  
  32. >>> [i for in b]  
  33. >>>  
  34. [33114422 
  35.   

  36.   
  37. 集合支持一系列标准操作,包括并集、交集、差集和对称差集,例如:  
  38.   
  39.    
  40.   
  41.          和 s的并集  
  42.   
  43.          和 s的交集  
  44.   
  45. –          求差集(项在t中,但不在s中)  
  46.   
  47.          对称差集(项在t或s中,但不会同时出现在二者中)  
  48.   
  49.    
  50.   
  51. 基本操作:  
  52.   
  53. t.add('x'           添加一项  
  54.   
  55. s.update([10,37,42])  在s中添加多项  
  56.   
  57. 使用remove()可以删除一项:  
  58.   
  59. t.remove('H')  
  60.   
  61. len(s)  
  62. set 的长度  
  63.   
  64. in  
  65. 测试 是否是 的成员  
  66.   
  67. not in  
  68. 测试 是否不是 的成员  
  1. #子集运算  
  2. >>> set([1,2,3,4,5])  
  3. >>> set([1,2,3])  
  4. >>> s.issubset(t)   #s是否为t的子集,相当于s<=t  
  5. False  
  6. >>> t.issubset(s)  #t是否为s的子集,相当于s>=t  
  7. True  
  8. >>> s<=t  
  9. False  
  10. >>> t<=s  
  11. True  
  12. >>> s
  13. False  
  14. >>> s>t  
  15. True  
  16. >>> s==t  
  17. False  
  18. >>> set([1,2,3])  
  19. >>> x==t            #两set是否相等  
  20. True  

对比frozenset:

frozenset:元素一经创建,不可增加、删除和修改。
不可变集合frozenset的元素可作为字典的键,但可变集合set就不行了。

还有一点需要注意,不管是set还是frozenset,Python都不支持创建一个整数的集合。

seta=set(1) #错误
setb=set('1')#正确

相关文章推荐

python&nbsp;语法笔记

[python] view plaincopy i=int(raw_input("i= "))   if i==0:      print 'i=0'   elif i==1...

【原创】python处理&nbsp;面试题:回文…

今日面试题:回文分割 对一个字符串按照回文进行分割,例如aba|b|bbabb|a|b|aba就是字符串ababbbabbababa的一个回文分割,每一个字串都是一个回文。请找到可以分割的最少的字串...

C#&nbsp;串口操作系列(1)

我们的开发环境假定为vs2005(虽然我在用vs2010,但避免有些网友用2005,不支持lambda,避免不兼容,就用2005来做例子)   一个基本的串口程序先画出界面。例如: 串口操作系列...

mysqli&nbsp;操作数据库

从php5.0开始增加mysql(i)支持 , 新加的功能都以对象的形式添加 i表示改进的意思 功能多、效率高、稳定 编译时参数: ./configure --with-mysql=/usr/b...
  • qizekai
  • qizekai
  • 2016年03月02日 14:26
  • 97

C++&nbsp;实现顺序栈与链式栈操作…

#ifndef __NODE_H__ #define __NODE_H__ //节点类模版 template//模版本质是将处理的数据类型说明为参数 struct Node {  //数据成员  El...
  • guo8113
  • guo8113
  • 2014年06月07日 17:40
  • 455

java&nbsp;生成excel文件,并进行操作

原文地址  http://www.2cto.com/kf/201203/124783.html jxl是java操作excel的工具, 在开源世界中,有两套比较有影响的API可 供使用,一个是POI,...

【原创】python&nbsp;xml处理

写个简单的xml处理,russiansample.xml 在C:\Python\mytest\目录下,内容如下:                              标题一      ...

python3&nbsp;发邮件实例(…

原文地址:发邮件实例(包括:文本、html、图片、附件、SSL、群邮件)">python3 发邮件实例(包括:文本、html、图片、附件、SSL、群邮件)作者:数据联盟-面包 环境:windows ,...

python&nbsp;生成验证码

原文地址:生成验证码">python 生成验证码作者:1吏刚才从网上抄了一个python生成验证码的程序。原文地址: http://www.pyfun.com/shenru/201008/841_2...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python&nbsp;集合操作&nbsp;set
举报原因:
原因补充:

(最多只允许输入30个字)