python 集合操作 set

来源:互联网 发布:http传输数据大小 编辑:程序博客网 时间:2024/06/16 03:29
  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 ('inputok')
    else:
        print ('inputerror')

  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')#正确
0 0
原创粉丝点击