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')#正确

Redis系列-存储篇set主要操作函数小结

最近,总是以“太忙“为借口,很久没有blog了,凡事贵在恒,希望我能够坚持不懈,毕竟在blog的时候,也能提升自己。废话不说了,直奔主题”set“ redis set 是string类型对象的无序集...
  • love__coder
  • love__coder
  • 2013年01月13日 13:21
  • 35059

Java中Set集合的使用

Set类继承了Conllection类,是一种集合类。Set的实现类有三个,下面我们会一一来说这些的不一样。      HashSet          HashSet类按照哈希算法来存取集合中的对象...
  • top_gun_1
  • top_gun_1
  • 2016年05月30日 09:36
  • 1931

Python&nbsp;-&nbsp;正则表达式指南

从这里学习而得:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Py...
  • smile_benson
  • smile_benson
  • 2016年05月19日 23:28
  • 603

【原创】面试题&nbsp;python&nbsp;…

简单说一下,这是上海一家公司给我的两道题,先让我做出来,然后再进行进一步的沟通,但是我已经找到工作了,所以就把这道题发了过去。。    Given a array of 10,000 random...
  • u012731379
  • u012731379
  • 2017年03月20日 14:45
  • 57

【redis 基础篇三】set集合常用命令

在使用集合的过程中,我们都明白他是通过Key-value的形式来保存的,在存入数据的时候将值赋值给一个key值,去出的时候,我不管你那个value值跑到了什么位置,我只要通过这个key值就可以找到你,...
  • huo065000
  • huo065000
  • 2016年03月04日 09:23
  • 840

Redis入门之 redis set集合的操作

/** * @author jackson * @date 2015-12-21 上午10:54:49 * @return void */ @Test public void je...
  • ningxuezhu
  • ningxuezhu
  • 2015年12月21日 12:14
  • 7955

【Redis笔记(五)】 Redis数据结构 - set集合

今天到了我们Redis学习笔记的第五篇,今天我们来介绍set集合数据结构。set类型介绍和C++或Java编程语言中的set类型一样,Redis中的set类型也是一种无序集合。...
  • Xiejingfa
  • Xiejingfa
  • 2016年01月27日 15:19
  • 1962

JAVA基础知识之Set集合

Set集合的基本特征是不记录添加顺序,不允许元素重复(想想是为什么)。最常用的实现类是HashSet. 本文将要介绍以下内容 HashSet类 HashSe的特征HashSet的equa...
  • solafy
  • solafy
  • 2016年10月28日 23:22
  • 4711

对java set集合的理解与学习

java 集合是用来存储数量不等的多个对象,并可以实现常用的栈,队列等,还可以保存具有映射关系的关联数组,集合下面分为,set ,list,map     首先set 集合就像一个罐子,多个对象丢进去...
  • u011230322
  • u011230322
  • 2016年06月12日 23:22
  • 3041

java中set集合的使用方法

1.HashSet  java.util.HashSet类实现了Java.util.Set接口。 它有如下特点:  1.它不允许出现重复元素;  2.不保证集合中元素的顺序  3.允许包...
  • u013399093
  • u013399093
  • 2015年08月18日 11:46
  • 23046
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python&nbsp;集合操作&nbsp;set
举报原因:
原因补充:

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