python 集合操作 set
  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. >>> x = set('spam')  
  11. >>> y = set(['h','a','m'])  
  12. >>> x, y  
  13. (set(['a''p''s''m']), set(['a''h''m']))  
  14.   
  15. 再来些小应用。  
  16.   
  17. >>> x & y # 交集  
  18. set(['a''m'])  
  19.   
  20. >>> x | y # 并集  
  21. set(['a''p''s''h''m'])  
  22.   
  23. >>> x - y # 差集  
  24. set(['p''s'])  
  25.   
  26. 记得以前个网友提问怎么去除海量列表里重复元素,用hash来解决也行,只不过感觉在性能上不是很高,用set解决还是很不错的,示例如下:  
  27.   
  28. >>> a = [11,22,33,44,11,22]  
  29. >>> b = set(a)  
  30. >>> b  
  31. set([33114422])  
  32. >>> c = [i for i in b]  
  33. >>> c  
  34. [33114422]  
  35.   

  36.   
  37. 集合支持一系列标准操作,包括并集、交集、差集和对称差集,例如:  
  38.   
  39.    
  40.   
  41. a = t | s          # t 和 s的并集  
  42.   
  43. b = t & s          # t 和 s的交集  
  44.   
  45. c = t – s          # 求差集(项在t中,但不在s中)  
  46.   
  47. d = t ^ s          # 对称差集(项在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 s  
  65. 测试 x 是否是 s 的成员  
  66.   
  67. not in s  
  68. 测试 x 是否不是 s 的成员  
  1. #子集运算  
  2. >>> s = set([1,2,3,4,5])  
  3. >>> t = 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. >>> x = 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;集合操作&nbsp;set

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭